【发布时间】:2013-07-26 09:33:17
【问题描述】:
程序代码获取信息然后做出决定。面向对象的代码告诉对象做事。
亚历克夏普
当我们使用Factory pattern时,我们会根据除工厂类之外的类的属性做出决定,所以这并不违反Tell, Don't Ask principle?
【问题讨论】:
标签: oop design-patterns factory design-principles tell-dont-ask
程序代码获取信息然后做出决定。面向对象的代码告诉对象做事。
亚历克夏普
当我们使用Factory pattern时,我们会根据除工厂类之外的类的属性做出决定,所以这并不违反Tell, Don't Ask principle?
【问题讨论】:
标签: oop design-patterns factory design-principles tell-dont-ask
不,我们不违反。
当我们告诉 Factory 类创建一个对象实例时,所有的责任都在 Factory 类中。调用者不会影响具体的类。
Factory 类本身也没有违反该规则。它正在做它必须做的事情:根据给定的规则(让它被硬编码或外部设置,或者更复杂的东西)决定生成什么样的对象。但每一点逻辑都在工厂方法内部。
【讨论】: