Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
程序代码获取信息然后做出决定。面向对象的代码告诉对象做事。 亚历克夏普
程序代码获取信息然后做出决定。面向对象的代码告诉对象做事。
亚历克夏普
当我们使用工厂模式时,我们根据工厂类以外的类的属性做出决定,所以这不违反告诉,不问原则吗?
不,我们不违反。
当我们告诉Factory 类创建一个对象实例时,所有的责任都在 Factory 类中。调用者不会影响具体类的内容。
Factory 类本身也没有违反该规则。它正在做它必须做的事情:根据给定的规则(让它被硬编码或外部设置,或者更复杂的东西)决定生成什么样的对象。但是每一点逻辑都在工厂方法中。