惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - JackMa

设计模式 外观 Facade 设计模式 适配器-Adapter 设计模式 命令-Command 设计模式 单件-Singleton 积累PDU 设计模式 工厂-Factory Java多线程编程 Red Hat Linux认证 认识Agile,Scrum和DevOps 博客目标 iOS Development Learning 13Nov 重新起步 iOS 开发 XML学习笔记(七)Schema语法杂项 XML学习笔记(六)Schema语法之复杂类型 UML和模式应用-第一部分:绪论 XML学习笔记(五)Schema语法之简单类型 XML学习笔记(四)Schema介绍篇 XML学习笔记(三)进阶篇 Xml学习笔记(二)Javascript篇
设计模式 策略-Strategy,装饰-Decorator,观察者-Observer
JackMa · 2016-03-19 · via 博客园 - JackMa

重温了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