zoukankan      html  css  js  c++  java
  • 设计模式~抽象工厂模式

    通过抽象工厂模式,可以处理具有相同或相似等级结构的多个产品族中的产品对象的创建问题。

    抽象工厂模式的结构

     从上图可以看出,抽象工厂模式涉及到以下角色:

    • 抽象工厂角色(AbstractFactory): 通常使用java接口或者抽象类实现,是该模式的核心,与应用系统的商业逻辑无关。
    • 具体工厂类角色(Concrete Factory): 这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑与应用系统的商业逻辑紧密相关。通常用具体java类实现。
    • 抽象产品角色(Abstract Product): 担任这个角色的是模式所创建产品对象的父类,或它们共同拥有的接口。通常使用java接口或java抽象类实现。
    • 具体产品角色(Concrete Product): 抽象工厂模式所创建的任何产品对象都是某个具体产品类的实例。

    示意性源码

    可以看出抽象工厂角色规定了两个工厂方法,分别提供两个不同等级结构的产品的对象。

     

     一般而言,有多少个产品等级结构,就会在工厂角色中发现多少个工厂方法。

    每一个产品等级结构中有多少具体产品,就有多少个产品族,也就会在工厂等级结构中发现多少个具体工厂。

     

     

     

     

     

     

    抽象工厂模式在农场系统的实现

     在这个系统里产品分为两个等级结构:水果(Fruit)和蔬菜(Veggie).

    水果类图

     蔬菜类图

     下图是描述这个系统的产品角色的相图

     可以看出,这个系统的产品可以分成两个等级结构:Fruit和Veggie,

    以及两个产品族:Tropical 和 Northern . 

    园丁等级结构类图:

     系统设计图如下:

     源码如下

     

     

     

     

     

     

     

     

  • 相关阅读:
    Android总结之json解析(FastJson Gson 对比)
    Android性能优化之UncaughtExceptionHandler定制自己的错误日志系统
    IOS遍历网页获取网页中<img>标签中的图片url
    IOS各种集合遍历效率对比
    cx_oracle访问处理oracle中文乱码问题
    使用tar解压文件提示gzip: stdin: not in gzip format错误
    Mac安装crfpp
    oracle 常用操作
    docker启动centos7后sudo不能使用
    常见Python爬虫工具总结
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/13401705.html
Copyright © 2011-2022 走看看