《设计模式》读书笔记

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

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

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.复合模式



待续……








参考:《设计模式》 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值