Factory Methodパターンを実装していましたが、いくつかの例をチェックして、抽象クラスまたはインターフェースを作成する代わりに製品の具象クラスを拡張することが正しいかどうかを判断できませんでした...これは単なる例です(PHP) .
したがって、抽象ファクトリとその具体的なファクトリがあります。
interface BookFactoryInterface
{
public function createBook();
}
class ElectronicBookFactory implements BookFactoryInterface
{
public function createBook()
{
return new ElectronicBook();
}
}
class PaperBookFactory implements BookFactoryInterface
{
public function createBook()
{
return new PaperBook();
}
}
すべての例で見たのは、通常、製品は抽象クラスまたはインターフェースから拡張されているということですが、テストを行っているときに、私の場合はその必要がないことに気付きました。必要なのは、一般的な動作と残りのサブクラス。
class Book
{
/*
All properties like title, authors, publicationDate
here, with the corresponding methods.
*/
}
class ElectronicBook extends Book
{
//...
}
class PaperBook extends Book
{
//...
}
クラスのインスタンス化はまだサブクラスに派生しているため、これはファクトリ メソッドの実装であると本当に信じていましたが、この方法で別のサンプル コードを見つけることができました。
質問: これはまだファクトリ メソッドの実装ですか? そうでない場合はなぜですか?