抽象工厂模式:此模式提供了一个接口,用于创建相关或者依赖对象的家族,
而不需要指定具体的实现类。
抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,
客户类和工厂类分开,客户需要任何产品的时候,只需要向工
厂请求即可,客户无须修改就可以获得新产品。这样一来,客
户就从具体产品中解耦。
抽象工厂模式的UML结构图如下:
模式结构说明:
AbstractFactory:抽象工厂。抽象工厂定义了一个接口,所有的具体工厂都必须实现此接口,这个接口包含了一组方法用来生产产品。
ConcreteFactory:具体工厂。具体工厂是用于生产不同产品族。要创建一个产品,客户只需要使用其中一个工厂完全不需要实例化任何产品对象。
AbstractProduct:抽象产品。这是一个产品家族,每一个具体工厂都能够生产一整组产品。
Product:具体产品。
设计原则:(1)多用对象组合,少用继承
所谓对象组合,就是让对象作为类的成员变量,通过构造函
数或者set方法给类对象的实例变量赋值。
(2)针对抽象编程,不针对实现编程
当设计一个软件系统的时候,要尽可能地对系统中出现的各
种食物进行抽象,从而建立基础的抽象底层,这样做的目的
就是让软件结构更加框架化、系统化,系统结构更加灵活,
以维护、易扩展。
抽象和具体实现的区别就在于:有了抽象,能做很多事情,
并且新增功能不会对原系统的稳定性造成影响,系统更加模
块化,软件更加易复用;而具体实现只能完成一件事情,并
且新增功能对原系统影响比较大,对于相同结构软件不能复
用,大大降低了开发效率,而且程序不易扩展。
(3)产品对象通过工厂暴露的方法创建
使用场合:
(1)创建产品家族,相关产品集合在一起使用的时候;
(2)想要提供一个产品类库,并只想显示其接口而不是实现时;
(3)通过组合的方式使用工厂时。
抽象工厂模式提供一个接口,用于创建相关或者依赖对象的家族,而不需要
指定具体实现类。抽象工厂模式是指当有多个抽象角色时使用的一种工厂模
式。抽象工厂模式可以向客户端提供一个接口,使用客户端在不必指定具体
产品的情况下,创建多个产品族中的产品对象。当有多个抽象产品角色是,
工厂方法模式已经不能满足要求。
抽象工厂模式和工厂方法模式的区别:
(1)工厂方法模式通过继承的方式实现应用程序的解耦,而抽象工厂模式则
通过对象组合的方式实现应用程序的解耦。
(2)工厂方法模式用来创建一个抽象产品,具体工厂实现工厂方法来创建具
体产品,而抽象工厂模式用来创建一个产品家族的抽象类型。
抽象工厂模式和工厂方法模式的区别:
(1)工厂方法模式通过继承的方式实现应用程序的解耦,而抽象工厂模式则
通过对象组合的方式实现应用程序的解耦。
(2)工厂方法模式用来创建一个抽象产品,具体工厂实现工厂方法来创建具
体产品,而抽象工厂模式用来创建一个产品家族的抽象类型。
优点:
1、 抽象工厂隔离了具体类的生成,是的客户端不需要知道什么被创建。所有的具体工厂都实现了抽象工厂中定义的公共接口,因此只需要改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。
2、 当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。
缺点:
添加新的行为时比较麻烦。如果需要添加一个新产品族对象时,需要更改接口及其下所有子类,这必然会带来很大的麻烦。
相关推荐
定义: 结构说明: 相关概念: 接口: 接口与抽象类的区别: 面向接口编程: 功能: 时序图: 优缺点: 代码阐释:
共150讲,时长共 33...1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括...
{2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section.2.10} {2.10.1}类的属性}{60}{subsection.2.10.1} {2.10.2}类的方法}{61}{subsection.2.10.2} {2.10.3}静态代码块}{62}{subsection.2.10.3} {...
设计模式学习笔记,此项目参考《大话设计模式》,只能作为入门级设计模式学习 设计原则 职责单一原则 开放-封闭原则 依赖倒转原则 高层模块不依赖底层模块,两个模块都应该依赖抽象。抽象不依赖细节,细节依赖抽象。...
1. 创建型模式:创建型模式关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。这些模式可以帮助我们更灵活地创建对象,避免直接使用new关键字来创建对象,降低...
参考书籍(推荐): 《Java设计模式 - 刘伟》 , 《图解设计模式 - [日]结城浩》 创建型模式 :check_mark:简单工厂模式( Simple Factor Pattern ) :memo: , :check_mark:工厂方法模式( Factory Method Pattern )...
酒店管理客房系统Java源码 创建型模式:关注对象的创建过程 :保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 ...抽象工厂模式是工厂模式的一种升级版本。 :分离了对象子组件的单独构造(由Builder来负
Java Design Patterns 学习笔记 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
describe:设计模式学习笔记 逻辑结构图 代码结构图 设计模式简述 创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式,共七种:适配器模式,装饰器模式,代理模式,...
学习笔记较长,如果想查看文章的目录,chrome浏览器可以配合简悦插件使用,或者下载到本地使用Typora打开。 :hot_beverage: Java基础 Java容器 Java并发 数据结构和算法 数据结构 树 图 算法 分治 动态规划 回溯 ...
031506_【第15章:Java反射机制】_工厂设计模式笔记.pdf 031601_【第16章:Annotation】_系统内建Annotation笔记.pdf 031602_【第16章:Annotation】_自定义Annotation笔记.pdf 031603_【第16章:Annotation】_反射...
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...
第一部分:设计模式 & UML 简单工厂 工厂方法模式 抽象工厂模式 策略模式 责任链模式 命令模式 模板方法模式 适配器模式 代理模式 外观模式 组合模式 装饰模式 享元模式 桥接模式 Builder模式 状态模式 解释器模式 ...
java初学者的学习笔记,很详细。 目录 0 第一节 7月15日 2 一、 IT行业相关介绍 2 二、C、C++和Java语言的比较 2 三、 JDK基础介绍 2 四、 面向对象与面向过程的比较 2 五、 Java相关介绍 2 六、 Path和Classpath...
设计模式共23种(大部分文献也有24种的说法,增加了空对象模式),常用一定要掌握的设计模式:单例模式、工厂模式、抽象工厂模式、策略模式、装饰模式、适配器模式、桥接模式、观察者模式 codetips :closed_book: ...
Python学习笔记系列 Hello World Python规范 Python变量 裴波那契数列 Python迭代器 Python函数 Python数据结构 模块及部分常见模块详解 戏说系列 校花系列 我与校花同桌之间的金钱交易(又名:戏说值传递与引用...