设计模式-抽象工厂模式

抽象工厂模式

其它创建型模式链接:

  1. 设计模式-简单工厂模式
  2. 设计模式-工厂方法模式
  3. 设计模式-建造者模式
  4. 设计模式-单例模式
  5. 设计模式-原型模式

产品等级结构与产品族

产品等级结构:产品等级结构即产品的继承结构,例如一个抽象类是电视机,其子类包括海尔电视机,海信电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构。

产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的位于不同产品等级结构中的一组产品,例如海尔电器工厂生产的海尔电视机,海尔冰箱,海尔电视机位于电视机产品等级结构中,海尔冰箱位于冰箱产品等级结构中,海尔冰箱和海尔电视机构成一个产品族。

image-20210517153843257

抽象工厂模式概述

​ 抽象工厂模式是所有形式工厂模式中最为抽象和最具一般性的一种你那个形式。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。

​ 抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。

具体定义如下:

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

抽象工厂模式结构

  1. AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法对应一种产品。
  2. ConcreateFactory(具体工厂):它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。
  3. AbstractProduct(抽象产品):它为每种产品声明接口,在抽象产品中声明了产品所有的业务方法。
  4. ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。

案例

​ 在每个系统都有由图形构件组成的构件家族,可以通过一个抽象角色给出功能定义,而由具体子类给出不同操作系统下的具体实现,例如系统中包含两个产品等级结构,分别是Button和Text;同时,包含三个产品系,即UNIX家族,Linux家族与Windows家族。

​ 使用抽象工厂模式来设计并实现该结构

结构图

image-20210517104028569

代码实现

抽象产品类
public interface Button {
   
    void display();
}
public interface Text {
   
    void display();
}
具体产品类
public class LinuxButton implements Button{
   
    @Override
    public void display() {
   
        System.out.println("显示LinuxButton");
    }
}
public class UNIXButton implements Button {
   
    @Override
    public 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值