设计模式之抽象工厂模式学习笔记
前言
在学习抽象工厂模式之前,最好先学习了解简单工厂模式和工厂方法模式。这样会对学习抽象工厂模式有帮助,因为抽象工厂模式也是基于工厂方法模式的。
解释
说白了就是工厂的工厂,以一个超级工厂为核心,围绕这个超级工厂去创建其他工厂,最后工厂再去用它自己的生产线去生产鼠标、键盘…
特点
有多个抽象产品类,具体工厂类能创建多个具体产品类实例。
实现
1.抽象工厂
也唤作超级工厂,是工厂的工厂。具体的联想工厂、惠普工厂的创建,都是围绕这个超级工厂展开的
/*** 抽象工厂*/public abstract class ComputerFactory {//生产键盘public abstract IKeyboard createKeyboard();//生产屏幕public abstract IScreen createScreen();
}
2.产品接口
为以下产品定义的接口
public interface IKeyboard {//键盘void keyboard();
}
public interface IScreen {//屏幕void screen();
}
3.根据产品接口定义不同对象
实现抽象接口,定义不同的对象。当然了,除了键盘除了雷蛇,还有HHKB、达尔优;屏幕除了三星,还有京东方…
public class RazerKeyboard implements IKeyboard {@Overridepublic void keyboard() {System.out.print("雷蛇机械键盘");}
}
public class SamsungScreen implements IScreen {@Overridepublic void screen() {System.out.print("三星屏幕");}
}
4.实现具体工厂类
除了美帝良心想,还有铁板熊掌普等其他工厂
/*** 联想工厂*/
public class LenovoFactory extends ComputerFactory {@Overridepublic IKeyboard createKeyboard() {return new RazerKeyboard();}@Overridepublic IScreen createScreen() {return new SamsungScreen();}
}
5.客户端调用
public class UserClient {public static void main(String []args){//美帝良心想工厂LenovoFactory foxconnFactory = new LenovoFactory();foxconnFactory.createKeyboard().keyboard();//代工雷蛇键盘生产foxconnFactory.createScreen().screen();//代工三星屏幕生产...//这里如果我不喜欢拯救者,想换个暗影精灵,只需要创建hp工厂对象,由hp工厂去生产即可}
}
设计模式之抽象工厂模式学习笔记相关推荐
- 设计模式之简单工厂模式学习笔记
前言 简单工厂模式,又叫做静态工厂方法模式.属于创建型工厂模式,但是不属于23中设计模式.学习简单工厂模式,是为了更好地学习工厂方法模式. 定义 简单工厂模式,即静态工厂方法模式,是由一个工厂对象决定 ...
- python抽象工厂模式_Python设计模式之抽象工厂模式
Python设计模式之抽象工厂模式 这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下 python面向对象编程入门,我们需要不断学习进步 "&qu ...
- 设计模式系列·抽象工厂模式
前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...
- 设计模式三—抽象工厂模式
设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...
- 设计模式复习-抽象工厂模式
设计模式复习-抽象工厂模式 有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展 ...
- 设计模式之四(抽象工厂模式第三回合)
原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如I ...
- 设计模式-04抽象工厂模式
设计模式-04抽象工厂模式 文章中涉及到的代码,请自行下载 https://gitee.com/pan_xiao_lei123/designmode.git 前面介绍的工厂方法模式中考虑的是一类产品的 ...
- C#设计模式(4)——抽象工厂模式
C#设计模式(4)--抽象工厂模式 一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法 ...
最新文章
- uva 558 Wormholes
- BZOJ-2115-Xor-WC2011
- 【机器学习基础】数学推导+纯Python实现机器学习算法1:线性回归
- [html] 制作页面时,前端如何适应各种异形屏?
- Java并发包JUC的Lock锁讲解
- eclipse plugins
- 准备好的文字转换成语音的方法
- [2017.01.04] 经典排序算法思想及其实现
- 迭代重心法 matlab,重心法
- wordpress自动采集插件wp-autopost-pro 3.7.8 完美绿色版
- 百度网盘python客户端——筑梦之路
- 分布式存储引擎大厂实战——一文了解分布式存储的可靠性
- python泊松分布_泊松分布与Python图解
- 模电_安规X电容_Y电容-区别与作用-20190507
- IPFS未来展望,迎接Web3.0新潮流
- php pdo 事物类,一个基于PDO的数据库操作类(新) 一个PDO事务实例
- Java实现本机IP的修改和获取
- ElasticSearch经纬度相关查询
- Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令
- cocos lua 获取点到直线距离