工厂模式,通过定义工厂父类负责创建对象的公共接口,而子类则负责生成具体的对象。
分为三种:简单工厂、工厂方法(工厂模式)、抽象工厂。
在此处,我就不写具体代码了,个人感觉代码阅读理解起来不如图片。
1、简单工厂
如图所示,简单工厂的话,在工厂类里进行类型的判断来创建对象。
2、工厂方法
(1)单一工厂方法
如图所示,工厂方法的话,和简单工厂模式的区别就是直接根据不同的类写它的创建对象的方法;
静态工厂方法就是将创建方法写成静态的,在使用时就不用创建工厂类的对象了。
缺点:扩展性还是不好,要改工厂类的内容。
(2)多个工厂方法
如图所示,含有老师和警察两个工厂类,这两个工厂继承总Job工厂类(接口也行),而老师和警察还可以扩展实现创建大学老师、中学老师这种具体的职业类。多个工厂方法扩展性更强。
3、抽象工厂
多种工厂方法模式,和抽象工厂类似,不同的是抽象工厂产品的种类不止一个,所以创建产品的方法也不止一个。