设计模式-工厂和抽象工厂。
github: https://github.com/DmuMenDuo/JAVADesignPattern

工厂模式

等到运行时才会知道去实例化哪个,工厂模式也是对设计原则中的将变化与不变化分离的典型应用。

简单工厂模式

什么时候用简单工厂模式?

发现出现大量的条件判断去创建不同instance的对象的时候就可以考虑用工厂将其进行封装了。判断的理由就是这段代码出现了变化,所以要进行封装进行提取。

简单工厂模式UML图:
简单工厂模式uml图

静态工厂模式

静态工厂模式:

静态工厂模式只不过是将简单工厂模式的工厂变成了静态类

静态工厂的优点和缺点?

优点:工厂无需实例化
缺点:工厂无法通过继承来改变方法的行为。

工厂模式

工厂UML图

父类提供一个抽象方法,子类负责实现,这个实现的内容就是一个工厂在产生对象的过程。
工厂

工厂模式定义:

工厂模式是用来封装’对象创建’使用的模式,他通过声明一个抽象父类让子类决定应该去创建什么具体对象。
工厂模式-2018111815425544733044.png

简单工厂和工厂模式的区别?

工厂模式是创建了一种框架(父类定义,子类实现new对象)。而简单工厂没有。所有工厂模式比简单工厂更加有弹性。

工厂模式有什么好处?

封装了变化。代码可以重复利用,方便维护。

抽象工厂模式

我理解的抽象这个词的含义是,这个工厂类没有具体指明是什么具体的工厂,而是一组工厂,用来实例化一组产品组,或者实例化一个产品的各个部分。

20181118154255459072470.png

对比一下工厂模式和抽象工厂模式

  1. 工厂模式采用的继承的方式,父类定义个抽象方法,子类去实现。这个实现的过程就是去创建自己需要的对象。
  2. 抽象工厂是定义一个公共接口,每一个接口都是一个要实例化对象的方法。抽象工厂在使用的时候会被当成属性注入需要实例化的地方。