工厂模式不违反“告诉,不要问”原则吗?

时间:2013-07-26 07:51:50

标签: oop design-patterns factory design-principles tell-dont-ask

  

程序代码获取信息然后做出决定。面向对象的代码告诉对象做事。

     

Alec Sharp

当我们使用 Factory pattern 时,我们会根据除工厂类之外的类的属性做出决定,因此这不会违反 {{ 3}}

1 个答案:

答案 0 :(得分:2)

不,我们不违反。

当我们告诉 Factory类创建一个对象实例时,所有责任都在Factory类中。调用者对具体类没有任何影响。

Factory类本身也不会违反该规则。它正在做它必须做的事情:基于给定的规则(让它被硬编码或外部设置,或者可能更复杂)决定生成什么类型​​的对象。但是逻辑的每一点都在工厂方法中。