外部オブジェクトの使用を必要とするいくつかのクラスを設計しようとしています。外部オブジェクトは、サード パーティのライブラリからのものです。疑似コードの例
Class A {
protected $foo
public function __construct(\ThirdParty\Foo $foo) {
$this->foo = $foo
}
}
これらのサブクラスは、Foo のインスタンス化方法に応じて実装がわずかに異なるメソッドを保持するために作成されます。
Class AA extends A {
$fooInfo = 'red'
public function __construct($foo) {
parent::__construct($foo)
}
public function get() {
return $this->foo->getTypeX();
}
}
Class AB extends A {
$fooInfo = 'white'
public function __construct($foo) {
parent::__construct($foo)
}
public function get() {
return $this->foo->getTypeY();
}
}
しかし、サードパーティのアプリを使用するには、インスタンス化するときに $fooInfo の値が必要です。
$clientRed = new Foo('red')
$clientWhite = new Foo('white')
では、AA または AB をインスタンス化するときに、Foo オブジェクトに色情報を取得するにはどうすればよいでしょうか?
$client = new AA(new Foo(????))