Задать вопрос

Как избавится от дублирования кода?

Сразу код:
class CommonClass {
  public function foo() {/*...*/}
  public function bar() {/*...*/}
}

class ConcreteClass1 extends CommonClass {
  public function doSomething1() {/*...*/}
  public function doSomething2() {/*...*/}
}

class ConcreteClass2  {
  public function doSomething1() {/* тот же код из ConcreteClass1 */}
  public function doSomething2() {/* тот же код из ConcreteClass1 */}
  public function doSomething3() {/*...*/}
}


В реализации ConcreteClass2 присутсвуют два метода, которые полностью дублируют код методов из ConcreteClass1. При этом наследоваться от ConcreteClass1 нельзя, потому в ConcreteClass2 методы foo() и bar() из CommonClass не должны быть.
Как можно избавиться от дублирования без множественного наследования и трейтов?
  • Вопрос задан
  • 1242 просмотра
Подписаться 4 Оценить Комментировать
Ответ пользователя Сергей Семенко К ответам на вопрос (7)
abler98
@abler98
Software Engineer
Можно просто переопределить методы foo и bar в ConcreteClass2
Ответ написан
Комментировать