设计模式之工厂三姐妹

在设计模式的大家庭中,有漂亮的工厂三姐妹,她们分别是简单工厂、工厂方法和抽象工厂。正如我们对于工厂的理解一样,她们都是用来生产产品的,但是又各自有各自的特色。接下来我们就一起认识一下她们吧。

 

1 简单工厂


实例化或者增加实例化对象,用一个单独的类来做这个创造实例的过程。


1.1 UML类图


 

1.2 优点


简单工厂模式的工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,,对于客户端来说,去除了与具体产品的依赖。就像计算器,客户端不用管该用哪个类的实例,只需要把“+”给工厂,工厂自动就给出相应的实例。客户端只要去做运算就可以了,不同的实例有不同的运算。


1.3 缺点

当添加需求时,如现在要添加一个开方的功能,就一定要给运算工厂类的方法中添加“case”分支条件,违背了“开放-封闭原则”。

 

2 抽象工厂


提供一个创建一系列或相关依赖对象的接口。而无需指定它们具体的类。


2.1 UML类图


 

2.2 优点


抽象工厂可以解决多个类型产品的创建问题。主要体现在以下两点:

1, 易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化的时候出现一次,使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。

2, 她让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操作实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。


2.3 缺点


抽象工厂的类特别多,容易臃肿。当我们需要增加需求时,相耦合的类都要改动,而大批量的改动显然对于编程来讲是不好的。

 

 

3 工厂方法


定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其他类。


3.1 UML类图


 

3.2 优点


工厂方法把职责分类,这样在增加新的需求时,不需要去更改原有的体系和工厂类,只需要扩展新的类就可以了。通常设计都是从工厂方法开始的。当设计者发现需要更大的灵活性时,便会向其他相关设计模式演化。


3.3 缺点


每增加一个产品,就需要增加一个产品工厂的类,增加了开发量。

 

总之,工厂三姐妹各有优缺点,我们要根据需求条件的不同选择不同的设计模式。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值