首页 > 其他分享 >设计模式之(3)——抽象工厂方法模式

设计模式之(3)——抽象工厂方法模式

时间:2022-08-29 10:11:20浏览次数:59  
标签:美的 模式 工厂 抽象 产品 设计模式 等级

定义:抽象工厂模式简单地讲,就是提供一个超级工厂,围绕这个超级工厂创建其他工厂;抽象工厂模式提供一个创建一些列相关或者相互依赖对象的接口;

  在此之前我们先来讲一下产品等级和产品族的概念;

  相同的产品等级就是相同的同一类的产品,比如美的冰箱、格力冰箱、海尔冰箱,他们的产品等级都相同,虽然厂家不同(属于同一品类);

  美的冰箱、美的空调、美的电风扇,他们虽然不是同一个产品等级,但是他们都属于同一个厂商,因此他们的产品族相同;

  抽象工厂模式是创建型模式,他强调一些列相关产品对象的创建过程(即同一产品族),它和工厂方法模式的侧重点不同,工厂方法模式更侧重于同一类(同一产品等级)产品的创建。

  在抽象工厂模式中,抽象工厂类提供具体工厂的定义,每个具体工厂按照工厂模式提供相应的对象;

主要解决:接口选择问题;

何时使用:系统中有多于一个的产品族,而系统只消费其中某一族的产品;

如何解决:在一个产品族中,定义多个产品;

关键代码:在一个工厂里聚合多个产品;

UML类图:

优点:当一个产品族中的多个对象被设计成一起工作时,他能保证客户端中始终只使用同一产品族中的对象;

缺点:产品族扩展困难,需要增加一个系列的某一个产品时,既需要在抽象工厂增加代码,又需要在具体实现工厂中增加代码;

使用场景:

  1、QQ换肤,一套一起换装;

  2、生成不同操作系统的程序;

注意事项:产品族扩展困难,产品等级扩展容易; 

标签:美的,模式,工厂,抽象,产品,设计模式,等级
From: https://www.cnblogs.com/wha6239/p/16634926.html

相关文章

  • 学习设计模式和画图
    目录参考参考使用keynote画图https://www.yrunz.com/p/用keynote画出手绘风格的配图/使用plantuml进行设计......
  • 9.设计模式-原型模式
    1.单例模式1.饿汉式packagecom.serlyf.singleton;/***单例模式-饿汉式*1.构造私有*2.本类创建静态示例*3.getInstance()方法公开*/publicclassSingl......
  • Spring 高级 工厂后处理器模拟实现-Mapper
    一、源方式自动注入packagecom.mangoubiubiu.show.a05;importcom.alibaba.druid.pool.DruidDataSource;importcom.mangoubiubiu.show.a05.component.Bean2;impor......
  • Java09-继承,抽象类
    第一章继承1.1概述由来多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示:其中,多个类......
  • 设计模式-建造者模式
    //1.定义产品//2.抽象构造者,定义抽象方法//3.具体建造者,生产具体的建造方法//4.指挥者,负责生产具体的产品packagecom.serlyf.builder;//产品publicclassHouse......
  • 尚硅谷-设计模式篇
    ​ 只学了点理论概念,没有实操代码,感觉无论是项目架构、代码设计,还是团队人员管理,其实都是设计模式的具体落地实现。https://www.bilibili.com/video/BV1G4411c7N4?p=149&......
  • 常见的设计模式-单例模式
    简述实现了类在当前进程中只有一个实例,比如python-GC重写__new__实现单例classA:def__new__(cls,*args,**kwargs):ifnothasattr(cls,'_instance......
  • 设计模式之工厂模式
    packagecn.com.pep.model.simpleFactory;/***@Title:CheesePizza*@Description:*@authorwwh*@date2022-8-2214:22:53*/publicclassCheesePiz......
  • 初识设计模式 - 单例模式
    简介一个类只允许创建一个对象(或实例),那么这个类就是一个单例类,这种设计模式称作单例设计模式(SingletonDesignPattern),简称单例模式。单例模式保证系统内存中只存在一个......
  • 接口和抽象类有什么区别
    接口和抽象类有什么区别你选择使用接口和抽象类的依据是什么?接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。......