文档章节

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

奋斗到天明
 奋斗到天明
发布于 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
JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52717096 JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模...

Aduroidpc
2016/10/01
0
0
小菜学设计模式——设计模式总结之创建型

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

learn_more
2015/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

申请Let's Encrypt永久免费SSL证书

环境安装 1、安装git yum install git-core 2、安装python 系统自带 不用安装 只要版本大于2.7即可。 获取Let's Encrypt免费SSL证书 先停止nginx 在阿里云安全组里加入 443端口的入规则 git ...

HGMrWang
27分钟前
0
0
如何使用playframework进行更好的开发

1: 自定义基类Controller 相信刚开始使用Play的人写的Controller 都继承于 play.mvc.Controller , 但这并不是一个很好的选择,自建基类Controller可以扩展更多的功能。 1.1 验证功能。 后台...

tuerqidi
31分钟前
3
0
解决ubuntu下root用户 不能ftp登陆的问题

解决ubuntu下root用户 不能ftp登陆的问题 一般情况下,由于种种原因ftp是不让root用户远程登陆,但只要你修改以个文件就可以登陆了. 注释掉 /etc/ftpusers 中的root即可 (最后重启vsftpd serv...

15834278076
43分钟前
0
0
《JavaScript高级程序设计(第3版)》阅读笔记

第6章 面向对象的程序设计 6.2 创建对象 6.2.1 工厂模式 JavaScript创建对象(一)—— 工厂模式 6.2.2 构造函数模式 JavaScript创建对象(二)——构造函数模式 6.2.3 原型模式 JavaScript...

Bob2100
48分钟前
0
0
Windows小技巧 – Win+R提高Windows使用效率

追求效率的朋友都需要一款顺手的快速启动工具,Win 平台上有键盘流的RunZ、Listary、ALTRun、Launchy、Wox 和图标流的 Fences、Rolan、 WinLaunch 等,而 Mac 上也有 Alfred、Spotlight。 而...

QQZZFT
50分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部