抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
按照工厂的方式,只提炼干货  

看起来负责,真正的内容只是AbstractFactory的实现部分,这里个工厂返回的是工厂,所以抽象工厂其实更适合称之为“双层工厂" 代码样例:第一层

public class FactoryProducer {public static AbstractFactory getFactory(String choice){if(choice.equalsIgnoreCase("SHAPE")){return new ShapeFactory();} else if(choice.equalsIgnoreCase("COLOR")){return new ColorFactory();}return null;}
}

第二层(就是普通工厂)

public Shape getShape(String shapeType){if(shapeType == null){return null;}       if(shapeType.equalsIgnoreCase("CIRCLE")){return new Circle();} else if(shapeType.equalsIgnoreCase("RECTANGLE")){return new Rectangle();} else if(shapeType.equalsIgnoreCase("SQUARE")){return new Square();}return null;}

典型调用:

 AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE");//获取形状为 Circle 的对象Shape shape1 = shapeFactory.getShape("CIRCLE");//调用 Circle 的 draw 方法shape1.draw();

设计模式04_抽象工厂相关推荐

  1. 设计模式04_抽象工厂模式

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46440915 抽象工厂模式是对象的创建模式,它是工厂方法模 ...

  2. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  3. 设计模式三—抽象工厂模式

    设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...

  4. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...

  5. 设计模式复习-抽象工厂模式

    设计模式复习-抽象工厂模式 有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展 ...

  6. 设计模式之四(抽象工厂模式第三回合)

    原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如I ...

  7. python抽象工厂模式_Python设计模式之抽象工厂模式

    Python设计模式之抽象工厂模式 这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下 python面向对象编程入门,我们需要不断学习进步 "&qu ...

  8. 抽象工厂模式设计模式_抽象工厂设计模式解释

    抽象工厂模式设计模式 抽象工厂设计模式是工厂设计模式的另一种形式. 这种模式可以被视为"超级工厂"或"工厂工厂". 抽象工厂设计模式(属于"四人帮&q ...

  9. 设计模式-04抽象工厂模式

    设计模式-04抽象工厂模式 文章中涉及到的代码,请自行下载 https://gitee.com/pan_xiao_lei123/designmode.git 前面介绍的工厂方法模式中考虑的是一类产品的 ...

最新文章

  1. Dapper学习笔记(3)-增、删、改、查
  2. 数据库索引的作用和长处缺点
  3. php.ini-dist和php.ini区别,php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)...
  4. 视频版权检测算法​​
  5. php订单金额分摊算法,PHP付钱找钱算法
  6. 《Cisco防火墙》一8.7 通过NAT规则定义连接限制
  7. spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群...
  8. linux寻找依赖文件
  9. strong,weak, retain, assign的区别@property的参数
  10. 第一章计算机基础知识作业答案,计算机基础作业题1答案
  11. 海康威视 摄像头 RTMP 转 FLV
  12. npm和包、npm下载安装使用包、全局安装包和本地安装包、全局安装nodemon包、开发依赖和生产依赖
  13. FOC——14.15.过流保护电路与单片机外围电路
  14. 手机h5像素_拍照超逆天!华为P30大奖来袭 | 4000万像素+50倍变焦,漳州手机摄影界真要沸腾了......
  15. 任意7个数字,选出5个进行组合排列,并使用Excel打印组合的所有情况。
  16. Java 面向对象基本特征
  17. android虚线边框_Android自定义View之绘制虚线
  18. 最近很火的程序员成语,你知道几个?
  19. css 字体样式设置大全
  20. 无人驾驶公司实力排名---自动驾驶初创企业排名(roadstar.ai、pony.ai、momenta、景驰和驭势科技等)

热门文章

  1. python入门——P51模块:模块内测试、搜索路径和包
  2. 蓝桥杯---特别数的和(C语言)
  3. 对话框:创建对话框模板和修改对话框属性
  4. 用DOM方式读取xml
  5. ssis面试题_SSIS面试问题
  6. 在SQL Server中使用SQL Coalesce函数
  7. Selenium(Python)页面对象+数据驱动测试框架
  8. python 读取、保存、二值化、灰度化图片+opencv处理图片的方法
  9. java日志系统简介: 从tomcat大量打印debug日志说起
  10. JAVA入门[1]--安装JDK