文档章节

创建型模式之三:抽象工厂模式

奋斗到天明
 奋斗到天明
发布于 2015/08/27 16:35
字数 249
阅读 19
收藏 0

抽象工厂模式在工厂模式上增加一层抽象。如果我们比对抽象工厂与工厂,就会十分明显地发现新增的那层抽象层,抽象工厂是一个创建其他工厂的超级工厂,我们可以称他为“工厂的工厂”

抽象工厂类图

抽象工厂Java代码

interface CPU {
 void process();
}
 
interface CPUFactory {
 CPU produceCPU();
}
 
class AMDFactory implements CPUFactory {
 public CPU produceCPU() {
 return new AMDCPU();
 }
}
 
class IntelFactory implements CPUFactory {
 public CPU produceCPU() {
 return new IntelCPU();
 }
}
 
class AMDCPU implements CPU {
 public void process() {
 System.out.println("AMD is processing...");
 }
}
 
class IntelCPU implements CPU {
 public void process() {
 System.out.println("Intel is processing...");
 }
}
 
class Computer {
 CPU cpu;
 
 public Computer(CPUFactory factory) {
 cpu = factory.produceCPU();
 cpu.process();
 }
}
 
public class Client {
 public static void main(String[] args) {
 new Computer(createSpecificFactory());
 }
 
 public static CPUFactory createSpecificFactory() {
 int sys = 0; // based on specific requirement
 if (sys == 0) 
 return new AMDFactory();
 else 
 return new IntelFactory();
 }
}

真实应用

实际上,抽象工厂是对于现代框架来说是一个重要的概念, 这里是一个关于他的问题。 以上文章翻译自: http://www.programcreek.com/2013/02/java-design-pattern-abstract-factory/

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
javascript 设计模式之工厂(Factory)模式

工厂模式介绍 工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类...

hlxiong
2014/04/14
0
0
设计模式Java Design Pattern-工厂方法模式FactoryMethod

我的博客 一、 设计模式的分类 大体可以分为三类: 创建型模式(5个) 单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式 结构性模式(7个) 适配器模式、装饰器模式、代理模式、...

勇敢写信
03/22
0
0
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0
23种设计模式(3):抽象工厂模式

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 类型:创建类模式 类图: 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来...

LCZ777
2014/07/05
0
0
小菜学设计模式——设计模式总结之创建型

1、面向过程与面向对象 1)面向过程通过划分功能模块,通过函数间相互调用来实现,但需求变化时就需要更改函数,而你改动的函数有多少地方在调用她呢?关联多少数据,这是很不容易弄得清楚地...

learn_more
2015/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7 个致命的 Linux 命令

导读 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避...

问题终结者
昨天
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
昨天
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
昨天
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
昨天
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部