设计模式之工厂

1 简单工厂

就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。

简单工厂的实现比较容易,这里就不再具体分析。

2 工厂方法模式(Factory Method)

工厂方法模式是简单工厂的扩张,工厂方法模式针对的是一个产品等级结构。其定义了一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method的优点是:

  1. 使一个类的实例化延迟到其子类.
  2. 使新增一个新对象,只需添加一套对应的工厂和产品就可以了,几乎不需要修改原代码。

首先给出其类图如下:

这里写图片描述
适用性:

  1. 当一个类不知道它所必须创建的对象的类的时候。
  2. 当一个类希望由它的子类来指定它所创建的对象的时候。
  3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

3 抽象工厂(Abstract Factory)

当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。这里就需要抽象工厂了。

抽象工厂模式针对的是多个产品等级结构。其提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 其类图如下:

抽象工厂的使用场景:

  1. 一个系统要独立于它的产品的创建、组合和表示时。
  2. 一个系统要由多个产品系列中的一个来配置时。
  3. 当需要强调一系列相关的产品对象的设计以便进行联合使用时。
  4. 当需要提供一个产品类库,而只想显示它们的接口而不是实现时。

关于工厂方法相关内容的源码请查看设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值