首页 > 其他分享 >抽象工厂模式 Abstract Factory

抽象工厂模式 Abstract Factory

时间:2023-12-21 09:03:50浏览次数:32  
标签:派生 Abstract Factory 模式 工厂 具体 产品 抽象

一、定义

提供一个创建一系列相关或相互依赖对象的接口

  • 抽象工厂模式侧重的是同一产品族,而抽象工厂侧重的是同一产品等级

image.png

二、适用场景

  1. 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
  2. 强调一些列相关的产品对象(属于同一产品族)一起使用,创建对象需要大量复杂代码
  3. 提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖具体实现

产品族概念
image.png

三、优缺点

优点:

  • 解决了工厂模式只生产一种产品的弊端
  • 新增一个产品族,只需要增加一个新的具体工厂,不需要修改代码
  • 具体产品在应用层代码隔离,无需关心创建细节

缺点:

  • 新增产品等级时需要修改抽象工厂的接口,违背开闭原则 OpenClose,增加系统复杂度

四、与工厂模式的区别:

工厂方法模式:
每个抽象产品派生多个具体产品类,每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建
抽象工厂模式:
每个抽象产品派生多个具体产品类,每个抽象工厂派生多个具体工厂类,每个具体工厂负责一系列具体产品的实力创建

五、代码示例

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/creational/abstractfactory

UML类图
image.png

标签:派生,Abstract,Factory,模式,工厂,具体,产品,抽象
From: https://www.cnblogs.com/meidanlong/p/17918173.html

相关文章

  • Why caused the dead factory?
    Thedeathofafactorycanbecausedbyvariousfactors,whichcanbebroadlycategorizedintoeconomic,social,andenvironmentalreasons.Someofthekeyfactorsthatcontributetotheclosureofafactoryincludethelackofdemandfortheproduct,hig......
  • Why the developed country choose the countries of southeast Asia to build proces
    ThedevelopedcountrieschoosecountriesinSoutheastAsiatobuildprocessingfactoriesandutilizetheirlaborforceforvariousreasons.Someofthekeyfactorsthatcontributetothisdecisionincludethelowcostoflabor,favorablegovernmentpolici......
  • Spring Boot 之 ModelFactory
    1.initModel    功能:publicvoidinitModel(NativeWebRequestrequest,ModelAndViewContainercontainer,HandlerMethodhandlerMethod) throwsException{ Map<String,?>sessionAttributes=this.sessionAttributesHandler.retrieveAttributes(request)......
  • llama-factory fine-tuning 4 (mixtral fine-tuning)
    introductionfine-tuningcommandclicktoviewthecodeCUDA_VISIBLE_DEVICES=0pythonsrc/train_bash.py\--stagesft\--do_train\--model_name_or_path../Mixtral-8x7B-v0.1/\--datasetalpaca_en\--templatemistral\--q......
  • (15-418)Lecture 3 Parallel Programming Abstractions
    抽象VS实现实例:ISPC程序ISPC是一种SPMD(singleprogrammultipledata)编译器。利用ISPC编写的计算sin(x)的程序如下图:ISPC提供了一种抽象,当调用ISPC函数时(即程序中调用sinx的语句),会产生一个gang,这个gang含有多个ISPC实例,每个实例会执行自己的代码,当每个实例都执行完后,恢复原先......
  • 秦疆的Java课程笔记:74 面向对象 抽象类
    abstract修饰符可以用来修饰方法,也可以用来修饰类。如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。抽象方法,只有方法的......
  • 用go如何实现接口抽象
    当涉及到连接不同类型的数据库时,可以用常见的方式去连接对应的数据库,也可以使用接口抽象的方式使代码更具灵活性和可扩展性,更显优雅。非接口抽象方式:如果涉及到多种数据库时,同样的代码显得非常臃肿。packagemainimport"fmt"//直接定义MySQL连接和插入函数funcMySQL......
  • Python实现软件设计模式3:抽象工厂模式
    特点系统中除了有多种产品类型(产品等级结构,如果汁、方便面、矿泉水),还出现了多个品牌(产品族,或农夫山泉、娃哈哈、康师傅、统一等品牌几乎都有这些产品)在工厂方法模式中,只有一个产品等级结构一个抽象产品(父类)、多个具体产品(子类)形成一个产品等级结构产品族是指由同一个工厂生产......
  • 抽象类、抽象方法、接口
    一、抽象类抽象类不是必须具有抽象方法,但是抽象方法一定是抽象类。方法和类都需要加上abstract修饰符。如果一个方法为抽象方法,则子类必须重写方法,如果子类不重写父类抽象方法,则子类需要声明为抽象类。抽象类可以有非抽象方法,抽象方法需要实现。调用抽象类的抽象方法或者非抽......
  • Python面向对象之抽象类与抽象方法
    C++和Java中面向对象中有抽象类或接口的说法,在python中没有abstract或interface这样的内置关键字。但是abc模块(AbstractBaseClasses)实现了这些抽象类检查的功能,其中ABC是抽象基类。@abstractmethod表示这个方法是一个抽象方法,子类必须重写。关于抽象类与抽象方法的示例代码如下:......