【设计模式】工厂模式的系统应用

应用背景: 系统中存在多种充值相关的方式,例如资讯类型充值、全字段类型充值、接口类型充值、总充值类型等,我们可以运用工厂模式在获取信息和设置信息时优化程序逻辑代码

示例:

首先设计一个父类的抽象类,里面包含创建所需对象的抽象方法,这些抽象方法就是工厂方法

注意: 如上图子类实现这些抽象方法时候,不真正由子类来实现具体功能,而是在子类方法里面做选择,选择具体的产品实现对象

产品父类:

父类通常会有使用这些产品对象实现一定的功能的方法,而且这些方法所实现的功能通常都是公共的功能,不管子类选择了何种具体的产品实现,这些方法的功能总是能正确执行

产品其中示例两个子类:

子类一:

子类二:

 创建者其中两个子类实现:

子类一:

 子类二:

 如上: 在工厂方法模式里面,客户端要么使用Creator对象,要么使用Creator创建的对象,一般客户端不直接使用工厂方法。

客户端其一的使用示例:

根据不同的条件选择不同创建者实现方法的调用获取信息

 综上优缺点:

优点:

1、可以在不知具体实现的情况下编程。 工厂模式可以让你在实现功能时候,如果需要某个产品对象,只需要使用产品的接口即可,而无需关心具体的实现。选择具体实现的任务延迟到子类去完成

2、更容易扩展对象的新版本

工厂方法给子类提供了一个挂钩,使得扩展新的对象版本变得非常容易。比如上述如果再增加另一种充值类型,只需要增加新的创建者和实现的产品类,在客户端调用时指定新的子类类型即可

缺点:

1、具体产品对象和工厂方法的耦合性

工厂模式中,工厂方法是需要创建产品对象的,也就是需要选择具体的产品对象,并创建它们的实例,因此具体产品对象和工厂方法是耦合的。

**本质: 延迟到子类来选择实现 [工厂方法本身并不会去实现产品接口,具体的产品实现是已经写好了的,工厂方法只要去选择实现就好了]

与简单工厂模式区别 --> 简单工厂是直接在工厂类里面进行"选择实现"; 而工厂方法会把这个工作延迟到子类来实现,工厂类里面使用工厂方法的地方是依赖于抽象而不是具体的实现,从而使得系统更加灵活,具有更好的可维护性和可扩展性。

** 工厂方法模式很好的体现了"依赖倒置原则" --> 不能让高层组件依赖于低层组件,而且不管高层组件还是低层组件,都应该依赖于抽象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值