java23种设计模式(二)抽象工厂模式
我们接着上一章的工厂方法模式继续学习一下抽象工厂模式。
抽象工厂模式:在工厂模式中,如果有多个产品,则就是抽象工厂模式。
例子:
有一个工厂开了两个子公司,专门用来生产电脑配件键盘和鼠标,一个是联想工厂则生产联想的产品,另一个是宏碁工厂则生产宏碁的产品。
代码如下:
1、工厂接口(可以生产鼠标和键盘)
public interface Factory {
// 生产鼠标
Mouse createMouse();
// 生产键盘
KeyBoard createKeyBoard();
}
2、联想工厂(生产联想鼠标和键盘)
public class LenovoFactory implements Factory {
@Override
public Mouse createMouse() {
return new LenovoMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new LenovoKeyBoard();
}
}
3、宏碁工厂(生产宏碁鼠标和键盘)
public class AcerFactory implements Factory {
@Override
public Mouse createMouse() {
return new AcerMouse();
}
@Override
public KeyBoard createKeyBoard() {
return new AcerKeyBoard();
}
}
4、键盘接口
public interface KeyBoard {
void getName();
}
5、联想键盘实现类
public class LenovoKeyBoard implements KeyBoard {
@Override
public void getName() {
System.out.println("这个是联想键盘");
}
}
6、宏碁键盘实现类
public class AcerKeyBoard implements KeyBoard {
@Override
public void getName() {
System.out.println("这个是宏碁键盘");
}
}
7、鼠标接口
public interface Mouse {
void getName();
}
8、联想鼠标接口
public class LenovoMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是联想鼠标");
}
}
9、宏碁鼠标接口
public class AcerMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是宏碁鼠标");
}
}
10、客户端(可以在联想工厂买联想鼠标和键盘,也可以在宏碁工厂买宏碁生产的鼠标和键盘)
@SpringBootTest
class FactoryApplicationTests {
@Test
void abstractF(){
LenovoFactory lenovoFactory = new LenovoFactory();
lenovoFactory.createKeyBoard().getName();
lenovoFactory.createMouse().getName();
AcerFactory acerFactory = new AcerFactory();
acerFactory.createKeyBoard().getName();
acerFactory.createMouse().getName();
}
}
总结:
(1)增加xx工厂:创建xx工厂,继承工厂接口,然后创建xx鼠标继承鼠标接口,创建xx键盘继承键盘接口即可。
(2)增加音响产品:首先创建音响接口,然后分别创建联想音响和宏碁音响实现类实现音响接口。然后再工厂接口中增加创建音响的方法,在联想工厂和宏碁工厂分别实现自家音响的创建。
如果文章对您有帮助,请记得点赞关注哟~
欢迎大家关注我的公众号<情系IT>,每日技术推送文章供大家学习参考。
java23种设计模式(二)抽象工厂模式的更多相关文章
- 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...
- java23种设计模式——三、工厂模式
源码在我的github和gitee中获取 工厂模式 工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在J ...
- 【Unity与23种设计模式】抽象工厂模式(Abstract Factory)
GoF中定义: "提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类." 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例 ...
- java23种设计模式——四、原型模式
源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...
- java23种设计模式——八、组合模式
目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式--四.原型模式 java23种设计模式-- ...
- java23种设计模式——七、桥接模式
原文地址:https://www.cnblogs.com/chenssy/p/3317866.html 源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 j ...
- java23种设计模式——五、建造者模式
源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...
- 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式
桥接模式及C++实现 桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一 ...
- Java 设计模式之抽象工厂模式(三)
原文地址:Java 设计模式之抽象工厂模式(三) 博客地址:http://www.extlight.com 一.前言 上篇文章 <Java 设计模式之工厂模式(二)>,介绍了简单工厂模式和 ...
- JavaScript设计模式(二):工厂模式
工厂模式模式的定义与特点 工厂模式(Factory Pattern)是编程中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们在创建对象时不会对 ...
随机推荐
- FreeSql (十九)多表查询
多表查询,常用的有联表 LeftJoin/InnerJoin/RightJoin ,这三个方法在上篇文章已经介绍过. 除了联表,还有子查询 Where Exists,和 Select 子表: IFre ...
- 【第十五篇】easyui datagrid的列编辑,同时插入两张表的数据进去
看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第二张表有一个列是需要用户手动填写添加的. 国际惯例,上代码 <div id= ...
- Java web 修改默认web部署路径
转载自:https://blog.csdn.net/lcczpp/article/details/79968070 在eclipse上面部署web项目后,它没有将你的项目文件放到tomcat 的目录下 ...
- MySQL二进制日志分析-代码实现(FORMAT_DESCRIPTION_EVENT)
如前文概述,MySQL Binlog v3以前版本, 二进制日志文件的第一个事件是START_EVENT_V3, 从v4版本开始第一个事件为FORMAT_DESCRIPTION_EVENT(以下简称F ...
- 年年有余之java求余的技巧集合
背景 传说里玉皇大帝派龙王马上降雨到共光一带,龙王接到玉皇大帝命令,立马从海上调水,跑去共光施云布雨,但粗心又着急的龙王不小心把海里的鲸鱼随着雨水一起降落在了共光,龙王怕玉皇大帝责怪,灵机一动便声称他 ...
- Python集训营45天—Day07 (面向对象编程进阶)
目录 1. @property装饰器 2. 魔法方法 3. 类属性和实例属性 4.静态方法和类方法 5. 单继承和多继承 6. 多态 7. del 方法 序言:上个章节我们了解了面向对象的基础知识,这 ...
- 代码审计之SQL注入及修复
在新手入门web安全的时候,sql注入往往是最先上手的一个漏洞,它也是危害相当大的一个漏洞,存在此漏洞的话,将有被脱裤的风险. 以下所有代码都是我自己写的,可能有不美观,代码错误等等问题,希望大家可以 ...
- 如何快速转载CSDN中的博客
看到一篇<如何快速转载CSDN中的博客>,介绍通过检查元素→复制html来实现快速转载博客的方法.不过,不知道是我没有领会其精神还是其他原因,测试结果为失败.
- java项目打包
http://blog.csdn.net/qq_34845382/article/details/53885907 自己用Rinnable JAR file 方法也可以.更简单.直接点击Finish即 ...
- 如何看破真假美猴王 ? --java中的Shadowing和Obscuring
故事背景 <西游记>第五十七回:唐僧因悟空又打死拦路强盗,再次把他撵走.六耳猕猴精趁机变作悟空模样,抢走行李关文,又把小妖变作唐僧.八戒.沙僧模样,欲上西天骗取真经.真假二悟空从天上杀到地 ...