Хорошо или плохо для абстрактного класса реализовать интерфейс?

Хорошо или плохо для абстрактного класса реализовать интерфейс?

оба примера ниже работают, но какой из них имеет больше смысла для вас ?

Опция 1,

interface A { function foo(); } abstract class B implements A { abstract public function foo(); } class C extends B { public function foo() { echo 'works'; } } $o = new C(); $o->foo(); 

вариант 2,

 interface A { function foo(); } abstract class B implements A { } class C extends B { public function foo() { echo 'works'; } } $o = new C(); $o->foo(); 

Related of "Хорошо или плохо для абстрактного класса реализовать интерфейс?"

В option2 классB ничего не добавляет к семантике вашего приложения, поэтому он совершенно не нужен. Если вам не нужно реализовывать какие-либо общие (по всем подклассам) функциональности в абстрактном классе, вам лучше получить непосредственно из интерфейса, чтобы сделать вещи не излишне сложными.

В этом случае все это можно было бы легко понять:

 interface A { function foo(); } class C implements A { public function foo() { echo 'works'; } }