您的位置:首页 > 其它

《设计模式》读书笔记

2015-08-11 09:25 232 查看
以下是读《设计模式》的一些笔记,多数是从书上抄过来的,偶尔有点自己的小理解。还未达到融会贯通的境界,共同学习,欢迎指正!

/------------------------------------------------------------------------------------------------------------------/

OO基础----抽象,封装,多态,继承 (面向对象的三大特点是:多态,继承,组合)

OO原则----封装变化;

多用组合少用继承;

针对接口编程、不针对实现编程;

为交互对象之间的松耦合设计而努力;

类应该对扩展开放、对修改关闭;

要依赖抽象、不要依赖具体类。

OO模式----策略模式,观察者模式,装饰者模式,工厂模式,单件模式,命令模式,适配器鱼外观模式,模板方法模式,迭代器与组合模式,状态模式,代理模式,复合模式。

设计模式:

1.策略模式

定义算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用他的对象。

2.观察者模式

观察者模式定义了一系列对象之间的一对多关系,当一个主题对象的状态发生改变时,其他的观察者都会受到通知。这样,让主题和观察者之间松耦合。(我们要为了交互对象之间的松耦合设计而努力~)

松耦合? 就是两个对象之间可以交互,有耦合关系,但是不需要太清楚彼此的细节,所以才叫松耦合。

在oc中,要实现观察者模式非常简单,iOS提供了这种机制,也就是KVO。只需要在一个类中添加消息发送者:



[[NSNotificationCenter defaultCenter] postNotificationName:kDZTestNotificatonMessage object:Nil userInfo:@{}];


在另一个类中添加观察者:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMessage:) name:kDZTestNotificatonMessage object:nil];


这样就建立了观察者与发送者的关系。

要注意的是:

视图dealloc需要取消观察

- (void)dealloc
{
[stockForKVO removeObserver:self forKeyPath:@"price"];
}


3.装饰者模式

可以动态的将责任附加到对象上,这个对象就是被装饰着,‘责任’就是装饰着。

举个例子说明:

现在需要一个摩卡和奶泡深焙咖啡(摩卡、奶泡是咖啡的调料调料)。一个深焙咖啡对象,一个摩卡对象,一个奶泡对象。他们三个继承同一个对象。用摩卡来装饰深焙咖啡,再用奶泡装饰摩卡,这样装饰起来的结果就是摩卡和奶泡深焙咖啡。如果这杯咖啡再需要添加牛奶,那么就再用牛奶对象来装饰奶泡,就得到一杯牛奶、摩卡和奶泡深焙咖啡。要得到摩卡和奶泡深焙啡的价格是这样实现的:摩卡向奶泡‘要’价格,奶泡向深焙咖啡‘要’价格,深焙咖啡把自己的价格‘给’奶泡,奶泡把自己的价格+深焙咖啡的价格‘给’摩卡,然后摩卡给出最终价格
= 自己的价格 + 奶泡给的价格。

在我看来,装饰着模式是基于‘组合’来完成的,可以写心得代码来添加新的功能,而无需改变现有的代码,这页弥补了继承所存在的问题。

这章涉及到一个设计原则:对扩展开放,对修改关闭。也就是说,需要添加新功能的时候,最好不要修改原有的代码,而是通过添加新的代码来完成。

实际上我有一个疑问:针对书中所举的例子,每个类都有计算自己价格的能力,需要一杯摩卡和奶泡深焙咖啡,直接拿取每个类的价格不就行了,不管怎样组合的咖啡,直接拿取价格不更直接吗?

4.工厂模式

5.单件模式

6.命令模式

7.适配器模式与外观模式

8.模板方法模式

9.迭代器与组合模式

10.状态模式

11.代理模式

12.复合模式

待续……

参考:《设计模式》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: