Как избавится от дублирования кода? Сразу код: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 не должны быть. Как можно избавиться от дублирования без множественного наследования и трейтов?