大话设计模式读书笔记--11.抽象工厂模式

定义

抽象工厂模式定义:

提供一个创建一系列相关或相关依赖对象的接口,而无需指定他们具体的类

抽象工厂模式通常是用于创建一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品

比如下图(来源于网络)

两厢车和三厢车称为两个不同的等级结构;2.0排量两厢车和2.0排量三厢车成为同一个产品族。

与工厂方法模式的区别

工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式

模式结构

下图来源于网络

AbstractFactory:是一个抽象工厂,包含所有产品创建的的抽象方法

ProductA和我ProductB: 是抽象产品,之所以抽象,是因为有两种不同的实现

代码实现

场景:  sqlServer数据库中有两User表和Department表, 由于客户需求,需要把sqlServer数据库换成Access数据库

场景分析: User相当于抽象产品ProductA, sqlServer数据库的User相当于ProductA1

点击下载代码: 抽象模式实现

点击下载代码: 简单工厂+反射+配置文件

特点及使用场景

优点:  在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理

缺点:  扩展困难,产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改

使用场景:  就是一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),

              并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式

转载于:https://www.cnblogs.com/liuconglin/p/6436027.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Primefaces dataTable设置某个cell的样式问题

设置primefaces dataTable的源网段列的Cell可以编辑,当回车键保存时,判断是否输入的网段合法,如果不合法就显示警告信息,并将这个不合法的数据用红色表示。问题是,怎么给这一个cell设定样式。通过给标签设定ID然后在后…

前端学习路线

第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 web前端开发的前景展望: 未来IT行业企业需求最多的人才 结合最新的html5抢占移动端的市场 自己创业做老板 随着互联网的普及we…

p1164【立方体求和】

题目: SubRaY有一天得到一块西瓜,是长方体形的....SubRaY发现这块西瓜长m厘米,宽n厘米,高h厘米.他发现如果把这块西瓜平均地分成m*n*h块1立方厘米的小正方体,那么每一小块都会有一个营养值(可能为负,因为西瓜是有可能坏掉的,但是绝对值不超过200).现在SubRaY决定从这…

html生成自定义表格,自定义js的表格插件

场景:指定元素,生成自定义表格。目的:了解js的插件开发。html代码:自定义表格插件var test new MyTable({elid:"mytable",//定义哪个div要生成表单thead:{//指定列名name:"姓名",age:"年龄",addr:…

使用JBehave,Gradle和Jenkins的行为驱动开发(BDD)

行为驱动开发 (BDD)是一个协作过程 ,产品负责人,开发人员和测试人员可以合作交付可为企业带来价值的软件。 BDD是 测试驱动开发 (TDD) 的合理下一步 。 行为驱动的发展 本质上,BDD是一种交付…

Maven Fluido Skin和Javadoc类图

我使用Maven网站已有一段时间了,对此我感到非常满意。 我不想在Maven 3之后更新我的项目,但是没关系,Maven 3带来了许多新奇的东西。 但是,有两件事使我感到烦恼:缺乏美观和现代的外观,以及浏览复杂代码的J…

咸宁省2021年模拟高考成绩查询怎么查,2021咸宁市地区高考成绩排名查询,咸宁市高考各高中成绩喜报榜单...

距离2018年高考还有不到一个月的时间了,很多人在准备最后冲刺的同时,也在关心高考成绩。2018各地区高考成绩排名查询,高考各高中成绩喜报榜单尚未公布,下面是往年各地区高考成绩排名查询,高考各高中成绩喜报榜单,想要了解同学可以…

国际旅游管理专业跨专业考计算机,旅游管理考研我想跨专业考旅游管理专业的研究 – 手机爱问...

2005-12-11我是学旅游管理的大一学生,听人说这专业就这位兄弟提出的苦恼在大学生中很典型呀!其实你说的不尽然!旅游管理专业,是个很有前景的专业呀!怎么会没有前途呀?你对自己的人生也太悲观了吧?就是你说,学校不太好,这可能对自身在大学四年的发展有所限制,但这主要还是看自…

java基础03变量和基本数据类型

package cn.bdqn.test;/*** * author 小豆腐* * 变量:会变化的量??* 一个数据在内存中存储空间的表示!在运行期间可以动态改变!* * 关键字:在java中已经被使用或者定义的单词!不能作为变量名&#xff01…

JavaFX中基于表达式的PathTransitions

在JavaFX中,您可以使用PathTransition对象为路径上的节点设置动画。 PathTransitions使用Shape对象描述它们需要沿其动画的路径。 JavaFX提供了各种类型的形状(例如,多边形,圆形,多边形,路径)。…

html 显示视频列表,dvd光碟制作节目轨菜单布局,不要视频缩略图,只显示文件列表...

“如何在刻录视频光盘时自定义制作菜单?实现的效果就是当光盘插入DVD影碟机播放时,首先会出现一个所有视频文件列表的菜单(节目轨菜单),就相似于音乐CD曲目表一样,不需要有视频缩略图,可通过遥控器选择性播放列表中某一…

v3学院教你学习-task和function的异同

v3学院教你学习-task和function的异同 task(任务)与function(函数)的不同 任务与函数主要有以下四点不同: l 函数只能与主模块共用一个仿真时间单位,而任务定义自己的仿真时间单位。 l 函数不能启动任务&am…

Java 7:HashMap与ConcurrentHashMap

从我过去有关性能的文章和HashMap案例研究中可能已经看到,Java线程安全性问题可以很轻松地使Java EE应用程序和Java EE容器崩溃。 在对Java EE性能问题进行故障排除时,我观察到的最常见问题之一是由非线程安全的HashMap get()和pu…

【2017-03-02】集合、结构体、枚举

集合和数组的差别: 数组:同一类型,固定长度集合:不同类型,不固定长度 一、普通集合(弱类型) 1、ArryList 使用集合首先要引用命名空间。 或者在ArryList上右键找“解析”。 2、集合的定义&#…

Mathematica图片局部变色

这篇博客来源于Stack-Exchange上的一个帖子,问题描述如下:如何将图中的红球变为蓝球? 这个问题下面有很多答案,我选了最好的一个答案,代码如下 img Import["C:/Users/1/Desktop/red.jpg"]; getReds[x_Image…

在WebLogic 12c上运行RichFaces

我最初以为我可以在几个月前写这篇文章。 但是我最终被不一样的事情所淹没。 其中之一是,它无法像我在4.0版本中那样简单地启动RichFaces展示柜。 有了所有的JMS magic和不同的提供者检查,这已经成为简单构建和部署它的挑战。 无论如何,我愿意…

Spring Boot系列教程一:Eclipse安装spring-tool-suite插件

一.前言 一直使用eclipse,个人习惯选用Eclipsespring-tool-suite进行开发,特别注意Eclipse要选用对应的spring-tool-suite进行安装,这点笔者浪费了好长时间,以下为对应的版本。eclipse-kepler.4.3.1–>springsource-tool-suite…

湖南工程学院计算机网络考试,湖南工程学院 计算机网络期末试卷试题

湖南工程学院 计算机网络期末试卷试题湖南工程学院 计算机网络 期末试题(计算机10级,90%的题目)1 从逻辑功能上看,计算机网络可分为哪两个子网?答:通信子网和资源子网 2 数据链路层的最基本功能答:数据链路层的最基本的功能是向该层用户提供…

C#设计模式(11)——外观模式(Facade Pattern)

一、引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“…

OS X Mountain Lion上的多个Java版本

在Mountain Lion之前,Java被捆绑在OS X中。似乎在升级期间,我在计算机上安装的Java 6版本被删除了。 显然,在升级过程中卸载Java的原因是Java运行时存在的安全问题。通过这种方式,您不得不安装可解决此安全问题的最新版本。 所以我…