核心:实现了创建者和调用者的分离,用工厂方法代替new操作。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
三种类型的工厂模式:
1.简单工厂(使用较多):又叫静态工厂模式,就是工厂类一般是使用静态方法,通过不同的方法(或是通过传递不同的参数)来返回不同的对象实例;
2.工厂方法:为了避免简单工厂模式的缺点,不完全满足OCP(开闭原则)。工厂方法模式和简单工厂模式最大的不同:简单工厂模式只有一个(对于一个项目或者一个独立模块而言)工厂类,而工厂方法模式有一组实现了相同接口的工厂类。根据设计理论建议:工厂方法模式,但实际上,我们一般都用简单工厂模式;
3.抽象工厂:用来生产不同产品族的全部产品:在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式;
不使用工厂模式的情况:
1 | public class Audi implements Car{ |
1 | public class Byd implements Car{ |
1 | public class test01 { //调用者 |
简单工厂:
1 | public class CarFactory { |
1 | public class test01 {//调用者 |
工厂方法:
增加两个实现类:
1 | public interface CarFactory { |
1 | public class test01 {//调用者 |
抽象工厂: