iOS-OC中级Android开发程序员

【笔记】Head First 设计模式

2018-01-06  本文已影响84人  莫威權在B612等着那温柔的风

原文在下面的链接
https://github.com/PoBlue/small_script/tree/master/head-first-design-pattern

Head First 设计模式 的笔记

12 个常用的设计模式,以一段说明,一张 UML 图的形式记录,方便学习和回顾

因为书里主要是以 Java 为主的,所以要有一点了解,还需一点对象的基础

Table of Contents

=================

OO原则

策略模式

用到的原则

  1. 将变化和不变化的地方找出来,分离
  2. 针对接口编程,而不是针对实现编程(接口就是所谓的抽象一层的东东,而不单指 java 接口)
  3. 多用组合,少用继承 (意思是少用继承来分离代码)

第 25 页练习

head-first-pratice-p25.png

观察者模式

原则

  1. 以松耦合的方式让一系列对象沟通状态(让格对象数据的派发和观察不耦合在一起)

第 56 页练习

head-first-pratice-p56.png

装饰者模式

用到的新原则

  1. 对扩展开放,对修改关闭(让基本的数据不变,通过扩展让类增加功能或者加强原有功能)

优缺点

  1. 优点:让类经常会修改变化的方法或者功能通过扩展来增加灵活性
  2. 缺点:会定义十分多的类,一不留神会让程序变得复杂

第 91 页的例子

head-first-pratice-p91.png

工厂模式

简单工厂

说明

  1. 就是简单的把创建对象的语句抽离出去,作为一个对象

第 117 页的例子

head-first-pratice-p117.png

工厂方法

用到的原则

  1. 依赖倒置,依赖抽象,不要依赖具体类

说明

  1. 将创建对象的方法放到子类里面,要子类决定创建,还让子类可以修改它们的行为

第 134 页的例子

head-first-pratice-p134.png

抽象工厂

指导方针规则

  1. 变量不可以持有具体的引用 (意思是:不能写死)
  2. 不要让类派生具体类(意思是:根源的类不能够是具体类, 要依赖抽象)
  3. 不要覆盖基类中已实现的方法(意思是:如果根源的类是改变了它继承类的方法,那么它就不适合被别的类继承了)

说明

  1. 如果类里面有一系列的类, 那么可以通过抽象工厂来提供这一系列的类的对象,方便以后快速更改配置

第 156 页的例子

head-first-pratice-p156.png

单件模式

意义

确保一个类只有一个实例,并提供一个全局的访问点

例子

并没有,这个主要关注代码层面的,留意一下多线程访问的问题就好了

命令模式

说明

请求 封装成对象,以便使用不同的请求,队列或者日志来参数化其它对象。命令模式也支持可撤销操作。

其中的 请求 意思是:让相应的类执行相应的操作

意义

  1. 命令模式将发出请求的对象和执行请求的对象解耦 (就是将调用者和被执行者进行解耦)
  2. 将对象执行的动作封装起来

第 206 页的例子

将执行变为一种请求


head-first-pratice-p206.png

第 207 页的例子

调用者 invoker 会在某时刻,调用命令对象的 execute()

head-first-pratice-p207.png

适配器模式

说明

将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间

第 243 和 244 页的例子

一个利用接口,一个利用多重继承来实现

head-first-pratice-p243.png head-first-pratice-p244.png

外观模式

说明

提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

规则

方针

只调用以下范围的方法

第 264 页的例子

head-first-pratice-p264.png

模板方法模式

说明

钩子

什么时候用:

好莱坞原则

第 289 页的例子

head-first-pratice-p289.png

迭代器与组合模式

迭代器模式

说明

单一责任原则

第 331 页的例子

head-first-pratice-p331.png

第 336 页的例子

head-first-pratice-p336.png

组合模式

说明

第 358 页的例子

head-first-pratice-p358.png

状态模式

说明

状态模式 vs 策略模式

策略模式:

状态模式:

第 410 页的例子

head-first-pratice-p410.png

代理模式

说明

如何让客户使用代理,而不是真正的对象

使用工厂模式, 按需实例化相应的代理

第 461 页的例子

head-first-pratice-p461.png

模式

说明

用模式思考

反模式

说明

剩下的模式

下面都是成熟,典型,正式的四人组模式,只不过没有前面的模式那么经常地被使用。

书中也是作为附录的形式记录的,就直接引用 wiki 了

上一篇下一篇

猜你喜欢

热点阅读