设计模式:工厂方法模式

 

目录

工厂方法模式

工厂方法模式类图

工厂方法的优点

工厂方法的使用情景

JDK相关的工厂方法实现举例


工厂方法模式

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

工厂方法模式类图

  • 抽象产品(Product):抽象类或者接口,负责规定产品的规范。
  • 具体产品(ConcreteProduct):具体产品类,实现抽象产品的规范。
  • 构造者(Creator):抽象类或者接口,定义一个抽象的生产方法,由子类负责具体实现。
  • 具体构造者(ConcreteCreator):具体构造者,实现构造者方法,生成具体产品。(具体产品会被上转型为抽象类型的对象)

工厂方法的优点

  1. 使用工厂方法可以让用户的代码和某个特定类的子类的代码解耦。(构造者与具体产品不接触,用户代码不需要引入ConcreteProduct类)
  2. 工厂方法使用户不必知道它所使用的对象是怎样被创建的,只需要知道该对象有哪些方法即可。(用户只需要知道产品Product的使用方式,不需要知道产品的创建过程。司机会开车就行,不需要知道汽车是如何建造的

工厂方法的使用情景

  • 用户需要一个类的子类的实例,但不希望与该类的子类形成耦合。
  • 用户需要一个类的子类的实例,但不知道该类有哪些子类可用。

JDK相关的工厂方法实现举例

  • 抽象产品(Iterator):抽象类或者接口,负责规定产品的规范。
  • 具体产品():由LinkedList、HashSet构造的,实现Iterator接口的内部类。
  • 构造者(Collection):集合接口,定义了iterator方法,由具体类实现。
  • 具体构造者(LinkedList、HashSet):具体集合,返回具体的Iterator实现。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值