这个星期一直在学设计模式,可是遇到了一个问题就是每次看完一种模式能懂,可是当多个模式混在一起后就不能更很清晰的表述出来。所以我认为学习设计模式除了利用代码实例来加深印象外,最重要的是能够理解他的设计理念。这一篇文章就来讲述工厂模式中三个相近的模式。
1.简单工厂模式
简单工厂模式在我看来是比较容易理解的,首先看一下他的类图
首先先创建一个Fruit接口,而FruitFactory作为工厂返回水果对象,每当需要新增一个水果对象时,就要在FruitFactory上加上else if映射到新的水果对象
2.工厂方法模式
工厂方法模式就在原来的简单工厂模式下的改进,将原来的FruitFactory作为接口,分别有水果对象工厂,即AppleFactory和BananaFactory,这样的好处是如果新增一个水果对象,不用修改原来的工厂代码,只要新增该水果对象和其工厂即可。
3.抽象工厂模式
抽象工厂模式相对复杂,与原来的工厂方法模式也不太相同,首先他们都有Fruit 和FruitFactory两个接口,但是在FruitFactory下的实体工厂类不是水果对象,而是可以使任何形式的工厂类,这样的好处是当存在等级不一致的关系时能很好的串联起来,例如工厂方法的实例中所有的工厂方法都是水果对象,但是如果想此实例中出现不同于对象的分类的情况,原有的工厂方法就无法解决这个问题。
同时在该模式下,两个水果对象为抽象类。他的实现是通过new一个FruitFactory对象,拿到其工厂类的get方法索引到具体的实现类。