简单工厂模式:
简单工厂模式最大的优点在于工厂类中包含了必要的判断逻辑,根据客户端的条件动态的实例化相关的类,对于客户端来说去除了对具体产品的依赖
![](https://i-blog.csdnimg.cn/blog_migrate/3e81a9fd166c49a0b0156c83683436a2.png)
工厂模式:
定义一个用于创建对象的接口,让子工厂决定实例化哪一个类,工厂方法使一个类的实例化,延迟到子类中去实现,可以在具体工厂产生实例的时候,做各种校验,和产生规则,避免了直接用new带来的不方便控制流程。
![](https://i-blog.csdnimg.cn/blog_migrate/1651db1bdf03e15cbf5e2a5edc7b7903.png)
抽象工厂:
升级了对产品的再次抽象,abstractFactory里包含所有创建抽象产品的方法。而ConcreteFactory1,ConcreteFactory2就是具体的工厂。而创建对象时选择ConcreteFactory1则会创建对应的ProductA1和ProductB1,如果改为创建ProductA1和ProductB2,而需要改为ConcreteFactory2工厂即可
![](https://i-blog.csdnimg.cn/blog_migrate/9d3dcf7330c4d50bce52abc0099d2c6d.png)