专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程思想 » 由浅入深学 工厂模式 (2) »正文

由浅入深学 工厂模式 (2)

来源: 发布时间:星期五, 2009年1月9日 浏览:2次 评论:0
  3.4 工厂思路方法   有了简单工厂模式后已经给我们带来了些好处但是还存在些问题如果我们又多了个影像家电产品MP4的后我们可以使MP4类从VideoWiring派生但是却要修改Create类代码使它能够生产出MP4这个产品来不好地方就在于我们每次多个产品时候都需要修改Create而不是保持原来代码不修改仅仅进行种扩展在Create类中修改不是每次都简单个Case语句就能够解决问题Create类中还封装了创建对象逻辑有可能还需要修改这些逻辑这就违反了面向对象设计中个很重要原则“开-闭”原则

  “开-闭”原则(the Open Closed Principle OCP):

  在面向对象设计中如何通过很小设计改变就可以应对设计需求变化这是令设计者极为关注问题开闭原则就是个软件Software实体在扩展性方面应该是开放而在更改性方面应该是封闭这个原则说在设计个模块时候应当使这个模块可以在不被修改前提下被扩展通过扩展已有软件Software系统可以提供新行为以满足对软件Software新需求使变化中软件Software系统有适应性和灵活性已有软件Software模块特别是最重要抽象层模块不能再修改这就使得变化中软件Software系统有稳定性和延续性因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术

  前边设计(简单工厂)中存在问题就是它分装了创建区别对象逻辑当有新产品时候不易扩展在开闭原则指导下我们考虑如何重新修改前边设计我们要尽量使用抽象机制和多态技术我们放弃对创建区别对象逻辑封装也采用类似产品方式抽象出抽象工厂具体工厂具体工厂从抽象工厂派生每个具体工厂中生产种具体产品“太棒了告诉你这个想法就是工厂思路方法模式”

  下面使用工厂思路方法模式修改前边设计:



  角色介绍说明:

  抽象工厂(Creator):定义具体工厂接口所有创建对象工厂类都必须实现这些接口

  具体工厂(ConcreteCreator):具体工厂包含和应用密切相关逻辑复杂创建具体产品

  抽象产品(Product):所有产品基类

  具体产品(ConcreteProduct):实现抽象产品申明接口工厂思路方法模式所创建每个对象都是某个具体产品例子

  工厂思路方法模式用意是定义个创建产品对象工厂接口将实际创建工作推迟到子类中工厂思路方法模式是简单工厂模式步抽象和推广由于使用了多态性工厂思路方法模式保持了简单工厂模式优点而且克服了它缺点在工厂思路方法模式中核心工厂类不再负责所有产品创建而是将具体创建工作交给子类去做这个核心类则成为了个抽象工厂角色仅负责给出具体工厂子类必须实现接口而不接触哪个产品类应当被例子化这种细节这种进步抽象化结果使这种工厂思路方法模式可以用来允许系统在不修改具体工厂角色情况下引进新产品

标签:

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: