Factory Method——工厂方法模式

Factory Method——工厂方法模式

什么是工厂方法模式

​用模板方法模式来构建生成示例的工厂,就是工厂方法模式。在Factory Method模式中,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责。这样就可以将生成示例的框架和实际负责生成示例的类解耦。

工厂方法模式中的角色构成

工厂方法模式的类图
在这里插入图片描述

  • Product(产品)
    Product角色属于框架方,是一个抽象类或接口,定义了工厂方法创建的对象。
  • ConcreteCreator(具体的产品)
    ​ ConcreteProduct角色属于具体加工这一方,它决定了具体的产品。
  • Creator(创建者)
    ​ Creator属于框架方,是一个抽象类,负责生成Product角色,具体处理交由子类ConcreteCreator角色决定。
    ​ Creator会声明工厂方法,该方法会生成具体实例并将结果以Product类型的对象返回,可以用工厂方法创建一个Product对象。
  • ConcreteCreator(具体的创建者)
    ​ ConcreteCreator角色属于具体加工这一方,它负责生成具体的产品。

示例程序

类组成表
包名 类名 说明
factorymethod.framework Product 只定义了抽象方法use()的抽象类
factorymethod.framework Factory 实现了create方法的抽象类,还包含createProduct()和registerProduct()两个抽象方法
factorymethod.idcard IDCard Product的子类,实现了use()方法
factorymethod.idcard IDCardFactory Factory的子类,实现了createProduct()和registerProduct方法
factorymethod FactoryMain 测试类
示例程序类图:

在这里插入图片描述

Product类:

​ 属于框架方,位于framework包中,声明了use()方法,定义了产品。

package com.example.factorymethod.framework;
public abstract class Product {
   
    public abstract void use();
}
Factory类:

​ 属于框架方,位于framework包中,使用了Template Method(模板方法模式)。Factory类声明了生成Product实例的create()方法,以及createProduct()和registerProduct()抽象方法,两个抽象方法的具体处理实现交给Factory类的子类负责。
​ Factory类定义了工厂是用来“调用create()方法生成Product示例”的。create()方法的实现是先调用createProduct()生成产品,接着调用registerProduct()注册产品。在使用Factory Method模式生成实例时,一定会用到Template Method模式。

package com.example.factorymethod.framework;

public abstract class Factory{
   
    public final Product 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值