java设计模式——简单工厂模式,工厂方法模式和抽象工厂模式

这个星期一直在学设计模式,可是遇到了一个问题就是每次看完一种模式能懂,可是当多个模式混在一起后就不能更很清晰的表述出来。所以我认为学习设计模式除了利用代码实例来加深印象外,最重要的是能够理解他的设计理念。这一篇文章就来讲述工厂模式中三个相近的模式。

1.简单工厂模式

简单工厂模式在我看来是比较容易理解的,首先看一下他的类图

首先先创建一个Fruit接口,而FruitFactory作为工厂返回水果对象,每当需要新增一个水果对象时,就要在FruitFactory上加上else if映射到新的水果对象

2.工厂方法模式

工厂方法模式就在原来的简单工厂模式下的改进,将原来的FruitFactory作为接口,分别有水果对象工厂,即AppleFactory和BananaFactory,这样的好处是如果新增一个水果对象,不用修改原来的工厂代码,只要新增该水果对象和其工厂即可。

3.抽象工厂模式

抽象工厂模式相对复杂,与原来的工厂方法模式也不太相同,首先他们都有Fruit 和FruitFactory两个接口,但是在FruitFactory下的实体工厂类不是水果对象,而是可以使任何形式的工厂类,这样的好处是当存在等级不一致的关系时能很好的串联起来,例如工厂方法的实例中所有的工厂方法都是水果对象,但是如果想此实例中出现不同于对象的分类的情况,原有的工厂方法就无法解决这个问题。

同时在该模式下,两个水果对象为抽象类。他的实现是通过new一个FruitFactory对象,拿到其工厂类的get方法索引到具体的实现类。

上述例子的源码:https://github.com/Nnnnnnnnnical/headFirstDesign

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值