三种工厂模式详解
https://www.cnblogs.com/zailushang1996/p/8601808.html
在一篇文章看到的,觉的解决我的困惑:https://segmentfault.com/q/1010000004865387
为什么使用工厂模式
不论是工厂模式还是其它创建型模式,都是一个目的——为了初始化一个对象。或者说,为了构建一个数据结构模型(类和对象本身就是一种自定义的数据结构)。
那么,问题来了,为什么有 new
这样方式可以创建一个对象,还要使用设计模式。本质上就是一个原因,不想让上层使用者直接使用 new 来初始化对象。
这样的原因有很多,绝大多数原因就是对上层的使用者隔离对象创建的过程;或者是对象创建的过程复杂,使用者不容易掌握;或者是对象创建要满足某种条件,这些条件是业务的需求也好,是系统约束也好,没有必要让上层使用者掌握,增加别人开发的难度。
所以,到这时我们应该清楚了,无论是工厂模式,还是上面的战友说的开闭原则,都是为了隔离一些复杂的过程,使得这些复杂的过程不向外暴露,如果暴露了这些过程,会对使用者增加麻烦,这也就是所谓的团队合作。
面向对象封装的本身也就是为了使得对外的 API
尽可能的简化。
例如,你定义了一个 Status
字段,但这个字段因为某些业务原因,需要使用整数来表示状态。那么,如果数字少了还好办,如果数字多了,上层使用者就不一定能记清楚每个数字代表的状态(比如你要做语音通信系统,那么,语音设备是有很多状态数字的)。这时,如果使用 new
来创建对象,然后再对 Status
进行赋值,不可避免的,可能要查阅开发文档,或者会不小心给出一个错误的值。这时,你就不妨使用工厂模式,或者其它合适的设计模式,来进行代码的建设。