开闭原则,其实是要求多站在全局的角度来规划类.

工厂方法模式比简单工程模式要复杂,它对简单工厂进行了进一步的抽象.

抽象是扩展视角,它增加了全局数据维护的负担.类变多了,客户端需要对接更多的一部分类.但是写代码的逻辑结构化了,写代码的人轻松了,调用它的人负担重了.

为了方便调用者,可以套外观模式.但是这样最基础的java代码越来越绕了.

当类越来越多,变化越来越复杂,并需要长期的维护和升级的时候才需要工厂方法模式.

一般情况下只需要简单工厂模式.

工厂方法模式是产品迭代后做的.一方面因为结构已经稳定,某些结构和逻辑已经成为团队共识可以抽象出来,大家已经能轻松接受.

产品架构是一个过程,不可能一步到位.工厂方法模式初期不选折.