Procedural code gets information then makes decisions. Object-oriented code tells objects to do things.
Alec Sharp
当我们使用 Factory pattern ,我们根据工厂类以外的类的属性做出决定,所以这不违反 Tell, Don't Ask principle ?
最佳答案
不,我们不违反。
当我们告诉 Factory 类创建一个对象实例时,所有的责任都在 Factory 类中。调用者不会影响具体的类是什么。
Factory 类本身也没有违反该规则。它正在做它必须做的事情:基于给定的规则(让它被硬编码或外部设置,或者更复杂的东西)决定生成什么样的对象。但是所有的逻辑都在工厂方法中。
关于oop - 工厂模式是否违反了 "Tell, Don' t Ask”原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875841/