oop - 工厂模式是否违反了 "Tell, Don' t Ask”原则?

标签 oop design-patterns factory design-principles tell-dont-ask

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/

相关文章:

javascript - 构造函数的实例可以继承原型(prototype)桶中未定义的成员吗?

c# - 不可变对象(immutable对象)列表使用的设计模式

c++ - 继承 : Access both private and public parts of another class

java - 带函数参数的参数化 Runnable

C++ 工厂。子构造函数不能从父访问

c++ - 为什么它不会进入无限循环

java - 寻找 OSGi 设计模式

python - 在 python 中实现访问者设计模式时是否需要 accept()?

laravel - 如何将参数传递给 Laravel 工厂?

design-patterns - 请举一个工厂方法模式的例子