博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式04_抽象工厂
阅读量:4293 次
发布时间:2019-05-27

本文共 1061 字,大约阅读时间需要 3 分钟。

抽象工厂模式(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();

转载地址:http://zgyws.baihongyu.com/

你可能感兴趣的文章
Socket深度探究4PHP(三)
查看>>
可继承扩展的单例实现
查看>>
VS调试技巧
查看>>
C++线程池实现
查看>>
std::function与回调类
查看>>
类型擦除
查看>>
QML动画按钮实现
查看>>
带授权的友元访问限制
查看>>
模板中void类型强转
查看>>
angular-froala-wysiwyg编辑器插件3.0版本中工具栏toolbarButtons选项不起作用
查看>>
nz-select选项无法默认显示
查看>>
Angular页面调用APP函数方法
查看>>
logstash配置pipelines.yml后报错
查看>>
opencv环境配置
查看>>
C++读写二进制文件
查看>>
2015-7-7 小记
查看>>
meshlab编译问题小结
查看>>
CMake Error:Failed to find "glu32" in "" with CMAKE_CXX_LIBRARY_ARCHITECTURE "".
查看>>
异或的妙用
查看>>
libsvm3.2.1 - SVM多分类简单实现
查看>>