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