我正在实现工厂方法模式,但是检查了几个示例,我无法确定为产品扩展具体类而不是创建抽象类或接口是否正确......这只是一个示例(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
{
//...
}
类实例化仍然是派生到子类的,所以我真的相信这是一个工厂方法的实现,但是我可以通过这种方式找到另一个示例代码。
所以问题是:这仍然是工厂方法的实现吗?如果不是为什么?