Design patterns 是否将责任委托给工厂类而不是子类,对吗?
我正在阅读有关工厂模式的书籍,并理解其概念和实施。但是这个定义让我很困惑。有人能澄清一下吗 定义:工厂模式用于定义用于创建对象的接口,但将对象创建委托给子类Design patterns 是否将责任委托给工厂类而不是子类,对吗?,design-patterns,factory-pattern,Design Patterns,Factory Pattern,我正在阅读有关工厂模式的书籍,并理解其概念和实施。但是这个定义让我很困惑。有人能澄清一下吗 定义:工厂模式用于定义用于创建对象的接口,但将对象创建委托给子类 我对将对象创建委托给子类感到困惑。这是将责任委托给工厂类而不是子类来纠正?我还不能发表评论。否则这将是一个评论 我的建议是仔细阅读这篇文章。他努力建立一个工厂模式。对于上下文,您最好阅读整个线程。它没有那么长,非常有启发性。阅读:工厂模式是定义一个用于创建对象的接口,但将对象创建委托给工厂类的子类 注意:factory类的子类 您从一个类开
我对将对象创建委托给子类感到困惑。这是将责任委托给工厂类而不是子类来纠正?我还不能发表评论。否则这将是一个评论 我的建议是仔细阅读这篇文章。他努力建立一个工厂模式。对于上下文,您最好阅读整个线程。它没有那么长,非常有启发性。阅读:工厂模式是定义一个用于创建对象的接口,但将对象创建委托给工厂类的子类 注意:factory类的子类 您从一个类开始:
CheeseCakeFactory
。您有这样一个实例:
CheeseCakeFactory theFactory = new CheeseCakeFactory(); ....... (1)
然后你会:
Cake aCake = theFactory.createCake(); ....... (2)
在这里,我同意你的观点,创造的任务被委托给了工厂。但是现在再考虑第一行:
CheeseCakeFactory theFactory = new SweetCakeFactory(); ....... (3)
我们假设SweetCakeFactory
继承CheeseCakeFactory
仅仅通过改变工厂的具体实施,最终创建的产品就会发生变化。现在第二行将要求子类创建对象。这就是为什么我们说实例化的责任被委托给了子类。试着这样分解定义 工厂模式用于定义用于创建对象的接口(…) 首先定义一个接口
interface IObjectFactory
{
object CreateObject();
}
这个接口将基本上定义工厂做什么以及它创建什么类型的对象。但是,它仍然是一个接口,所以要使用它,首先需要实现它
因此,
(…)但将对象创建委托给子类
在这里,我认为问题在于子类的措辞:接口不能有子类,因为它们不是类,它们是接口。此外,整个句子似乎是冗余的,因为接口必须始终将实现委托给类
如果你看一看,你会发现它看起来很相似,但却传达了实际的含义:
该模式的本质是“定义一个接口来创建一个对象,但是让实现该接口的类决定实例化哪个类。工厂方法让类将实例化延迟到子类。”