抽象工厂模式介绍

抽象工厂模式是一种扩展了工厂方法模式的设计模式,它可以创建一系列相关的产品。产品分为产品等级结构和产品族,比如电视机和电冰箱的不同品牌。抽象工厂定义创建产品的方法,具体工厂实现这些方法来创建具体产品。客户端通过抽象工厂来生产家电,提升了代码的复用性和扩展性,但增加新产品等级结构时可能需要修改抽象层代码,这违背了开闭原则。
摘要由CSDN通过智能技术生成

什么是抽象工厂模式

抽象工厂模式是工厂方法模式的扩展,它不仅可以创建单一产品,还可以创建一组相关的产品。

产品等级结构与产品族

为了更好的理解抽象工厂, 我们这里先引入两个概念:
产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品
牌的电视机是其子类。
产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等
级结构中。

抽象工厂结构

抽象工厂模式的主要角色如下:
1)抽象工厂(Abstract Factory):它声明了一种用于创建一族产品的方法,每一个方法对应一种产品。
2)具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。
3)抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
4)具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它 同具体工厂之间是多对一的关系。

类图:

 代码实现:

// 抽象产品
public interface AbstractFreezer {
}
public interface AbstractTV {
}
// 具体产品实现
public class HairFreezer implements AbstractFreezer {
}
public class HisenseFreezer implements AbstractFreezer {
}
public class HairTV implements AbstractTV {
}
public class HisenseTV implements AbstractTV {
}
// 抽象工厂
public interface AppliancesFactory {
    AbstractTV createTV();
    AbstractFreezer createFreezer();
}
// 具体工厂
public class HairFactory implements AppliancesFactory {
    @Override
    public AbstractTV createTV() {
           return new HairTV();
    }
    @Override
    public AbstractFreezer createFreezer() {
           return new HairFreezer();
    }
}

public class HisenseFactory implements AppliancesFactory {
    @Override
    public AbstractTV createTV() {
           return new HisenseTV();
    }
    @Override
    public AbstractFreezer createFreezer() {
           return new HisenseFreezer();
    }
}
//客户端
public class Client {
private AbstractTV tv;
private AbstractFreezer freezer;

  public Client(AppliancesFactory factory){
  //在客户端看来就是使用抽象工厂来生产家电
  this.tv = factory.createTV();
  this.freezer = factory.createFreezer();
  }
  public AbstractTV getTv() {
         return tv;
  }
  public void setTv(AbstractTV tv) {
         this.tv = tv;
  }
  public AbstractFreezer getFreezer() {
         return freezer;
  }
  public void setFreezer(AbstractFreezer freezer) {
         this.freezer = freezer;
  }

  public static void main(String[] args) {
      Client client = new Client(new HisenseFactory());
      AbstractTV tv = client.getTv();
      System.out.println(tv);
      AbstractFreezer freezer = client.getFreezer();
      System.out.println(freezer);
  }
}

抽象工厂模式优点:

1、对于不同产品系列有比较多共性特征时,可以使用抽象工厂模式,有助于提升组件的复用性。

2、当需要提升代码的扩展性并降低维护成本时,把对象的创建和使用过程分开,能有效地将代码统一到一个级别上。

3、解决跨平台带来的兼容性问题。

抽象工厂模式缺点:


增加新的产品等级结构麻烦,需要对原有结构进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大不变,违背了开闭原则。

 

在当今化工行业转型升级的大潮中,智慧化工园区作为推动绿色、创新、高质量发展的关键力量,正逐步成为行业发展的新趋势。随着国家政策的不断引导和推动,智慧化工园区的建设已不仅仅是提升管理服务水平的手段,更是实现安全生产、环境保护和应急响应能力全面提升的重要途径。从提升重大危险源监测、隐患排查到完善风险分级管控机制,智慧化工园区利用信息化、智能化技术,构建了一个全方位、多层次的安全、环保、应急救援一体化管理平台。 智慧化工园区以安全、便捷、高效、节能、物联为核心理念,通过深度融合云计算、物联网、人脸识别、大数据分析、人工智能等先进技术,实现了园区生产、车辆、人员、环境、能源等关键环节的智能化管理。在基础网络方面,园区不仅实现了全千兆光纤接入,还覆盖了5G信号、NB-IoT信号和WiFi网络,为万物互联提供了坚实的基础。智慧安监作为园区的核心板块,通过企业安全云服务、安全文化宣传教育、舆情信息监管、风险分级管控、隐患排查治理以及重大危险源管理等功能,构建了从源头到末端的全过程安全监管体系。特别是企业一张表功能,实现了企业档案的数字化管理,为精准施策提供了有力支持。此外,智慧园区还通过物联网监测预警系统,利用智能终端设备对园区内的各类风险进行实时监测和预警,确保园区安全无虞。 在智慧节能与环保方面,园区通过智能仪表监测电、水、冷、气等能耗数据,实现能源管理的精细化和节能减排。智慧应急系统则融合了指挥调度、辅助决策等功能,能够在突发情况下迅速响应,有效处置。智慧环保系统则利用物联网技术和大数据分析,实现了环境质量的自动监测和预警,为环保部门提供了精准的执法依据。同时,智慧物流、智慧安防、智慧楼宇等系统的引入,进一步提升了园区的智能化水平和运行效率。这些系统的集成应用,不仅让园区的管理更加便捷高效,还极大地提升了园区的整体竞争力和可持续发展能力。对于正在筹备或优化智慧化工园区建设方案的读者来说,这份解决方案无疑提供了宝贵的参考和灵感,让智慧化工园区的建设之路变得更加清晰和有趣。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值