如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合?
Ps. 工厂模式使用了factory创建对象去将代码中直接new对象的进一步封装,从代码量和用例来看无疑是变得更加复杂了一些,但是从未来代码的维护来看,这是将下层模块和上层模块隔离**(上层模块都是调用factory而不是直接去使用下层的子模块)和给未来的变化添加了约束**(子模块的改变只能被原来虚函数/接口类的规定变换)和内聚的加深(上层模块只需要调用factory即可,不需要关心子模块)。