oop – 工厂模式是否违反“告诉,不要问”原则?

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

点赞