设为首页|收藏学知识 |改版意见收集|智能DIY搜索|加入我们|网站地图
当前在线人数:8770
文化共享 好教程 易学习 新资讯
计算软件水平考试

AbstractFactory(抽象工厂)

2007-04-29 源自: 网友评论 共有( )条评论! 内容报错
本文章地址:http://kao.xuezhishi.net/ITtest/level/2007-04-29/23276.html [将本信息与朋友分享!]

                     

  ABSTRACT FACTORY)(抽象工厂)——对象创建型模式提供一个创建一系列相关或相互依赖的接口,而无需指定它们具体的类

  参与者:
  l AbstractFactory

  声明一个创建抽象产品对象的操作接口

  l ConcreteFactory

  实现创建具体产品对象的操作,一个ConcreteFactory实例对应同一系列产品的创建

  l AbstractProduct

  为一类产品对象声明一个接口

  l ConcreteProduct

  定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct接口

  l Client

  仅使用由AbstractFactory和AbstractProduct类声明的接口。

  效果:

  1)  分离了具体的类

  一个工厂封装创建产品对象的责任和过程,它将可以与类的实现分离。客户通过抽象接口操纵实例。

  2)  使得易于交换产品系列

  一个具体工厂类在一个应用中仅出现一次(初始化时),当需要改变产品系列时代码改动量很少。

  3)  有利于产品的一致性

  一个应用一次只能使用同一个系列中的的产品,AbstractFactory很容易实现。

  4)  缺点:难以扩展抽象工厂以生产新种类的产品。每一种产品对应与工厂的一个接口,增加新种类的产品就需要扩展工厂接口,这将涉及AbstractFactory类及其所有子类的改变。

  实现:

  1)  将工厂作为单件。一个应用中一般每个产品系列只需一个ConcreteFactory实例,可以运用Singleton模式。

  2)  AbstractFactory仅声明一个创建产品的接口,真正创建产品是由ConcreteProduct子类实现的。最通常的一个办法是为每一个产品定义一个工厂方法(Factory Method)

  3)定义可扩展工厂,AbstractFactory通常为每一种它可以生产的产品定义一个操作,增加新的产品不方便。一种灵活但不安全的设计是给创建对象的操作增加一个参数。那么AbstractFactory只需要一个Make操作和一个指示要创建对象的种类的参数。

http://kao.xuezhishi.net/ITtest/level/2007-04-29/23276.html
评论 点击查看
 


加入QQ群:35714363 一起成长
我要加入更多群 我有意见要反映
考试教室

学知识原创教程下载

本类最近更新
阅读排行

其他相关信息