首页 > 其他 > 详细

设计模式 策略-Strategy,装饰-Decorator,观察者-Observer

时间:2016-03-20 00:21:43      阅读:293      评论:0      收藏:0      [点我收藏+]

重温了Head First 3个设计模式。提炼一下思想,笔记如下。

策略-Strategy

当一个类或类族中重复实现某些同类的方法(behavior)时,考虑使用策略模式。

该模式是将Behavior或算法设计成接口。具体不同的Behavior实现该接口。原来的类中含有算法接口的成员。通过set或constructor设定Behavior或算法。

结合Head First例子记忆。将Duck的Fly,Swim,Quack,Display等都抽象成接口。然后不同的算法实现各自的接口。在Duck中包含有IFlyBehavior,ISwimBehavior等的member。

主要体现了Program to interface, not implement. 即针对接口变成而非针对实现。

技术分享

 

装饰-Decorator

主要特征是反复调用类族中相同的方法。设计思路,装饰者包含一个父类组件member。当调用重复的方法时,先调用组件的方法。通常在装饰件构造时传入组件。

结合Head First例子记忆。饮品是咖啡和调料的父类。调料中有一个饮品成员。在构造时传入。在计算cost时,cost = 饮品cost() + 调料cost()

技术分享

 

观察者-Observer

当多个类要根据某一变动而作出反应时,考虑引入该模式。主题Subject中有一个观察者队列,包含register,remove,notify方法。观察者有一个主题成员。在观察者的构造函数中传入主题。并进行注册。在Subject有变化时,notify方法中遍历Observer队列,调用Observer的update方法。

结合Head Frist例子。Subject是WeatherData。不同的显示器是Observer。当WeatherData变化时,遍历Oberver队列,调用update方法。

技术分享 

 

参考以下复习UML中的关联关系

http://blog.csdn.net/sfdev/article/details/3906243

设计模式 策略-Strategy,装饰-Decorator,观察者-Observer

原文:http://www.cnblogs.com/JackMa/p/5296791.html

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