首页 > 其他 > 详细

Design Patterns Part I

时间:2014-04-22 20:36:20      阅读:546      评论:0      收藏:0      [点我收藏+]

Chapter One 策略模式

1. 鸭子要加入 fly() 函数, 于是考虑在基类 duck中加入虚函数分别在子类予以实现. 但结论却是, 当涉及维护时, 为了复用目的而是用继承, 结局并不完美.

2. 考虑使用接口, 比如有一个 flyable(), Quackable() 等等, 只有会飞的鸭子才继承 Flyable 接口中. 但这种方法会造成代码无法重用.

结论, 软件开发上的不变真理是 CHANGE

设计原则: 找出应用中可能需要变化之处, 把它们独立出来, 不要和那些不需要变化的代码混在一起.

所以, Duck 类中易于变化的部分抽取出来, 放在别的类结构中. 现在飞行和呱呱叫都有它们自己的类.

那么, 如何设计鸭子的行为呢?

针对接口编程, 而不是针对实现编程.

这里, 抽象出接口 FlyBehavior, 然后实现两个子类, FlyWithWings FlyNoWay. 真正用到

bubuko.com,布布扣

 

 

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

还可以设置行为

bubuko.com,布布扣

设计模式原则: 多用组合, 少用继承

上面所写, 就是策略模式

 

Chapter Two Visitor Strategy

当你想要为一个对象的组合增加新的能力, 且封装部重要时, 就可以使用访问者模式

这个模式的基本想法如下: 首先我们要有一个由许多对象组成的结构对象, 这些对象的类都用于 accept 方法用来接受访问者对象. 访问者是一个接口, 它拥有一个 visit 方法, 这个方法对访问对象结构中的不同类型元素做出不同的反应; 在对象结构的一次访问中, 我们遍历整个对象结构, 对每一个对象实施 accept 方法, 在每一个元素的 accept 方法中回调 visit 方法, 从而使访问者得以处理对象结构的每一个元素. 我们可以针对对象结构设计不同的实在访问者完成不同的操作.

Wiki 上给出非常易于理解的例子: http://zh.wikipedia.org/wiki/%E8%AE%BF%E9%97%AE%E8%80%85%E6%A8%A1%E5%BC%8F#Java.E7.9A.84.E4.BE.8B.E5.AD.90

另外, Wiki 的最后还给出 HTML 解析时应用 Visitor 的示例. 这就是我在面 E 家时面试官问我的问题, Visitor 模式

Design Patterns Part I,布布扣,bubuko.com

Design Patterns Part I

原文:http://www.cnblogs.com/zhouzhuo/p/3679427.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!