Head First 设计模式 (纲要)

Head First 设计模式

模式

模式是在某情境(context), 针对某问题的解决方案.

情境就是应用某个模式的情况. 这应该是会不断出现的情况.

问题就是你想在某情境下达到的目标, 但也可以是某情境下的约束.

解决方案就是你所追求的: 一个通用的设计, 用来解决约束, 达到目标.

OO基础

抽象

封装

多态

继承

OO原则

  1. 封装变化.
  2. 多用组合, 少用继承.
  3. 针对接口编程, 不针对实现编程.
  4. 为了交互对象之间的松耦合设计而努力.
  5. 对扩展开放, 对修改关闭.
  6. 要依赖抽象, 不要依赖具体类.
  7. 最少知识原则: 只认识直接的朋友.
  8. 好莱坞原则: 别找我, 我会找你.
  9. 单一职责: 类应该只有一个改变的理由.

 

OO模式

策略模式

定义了算法族, 分别封装起来, 让它们之间可以相互替换, 此模式让算法的变化独立于使用算法的客户.

观察者模式

定义了对象之间的一对多依赖, 这样一来, 当一个对象改变状态时, 它的所有依赖者都会收到通知并自动更新.

装饰者模式

动态的将责任附加到对象上. 想要扩展功能, 装饰者提供有别于继承的另一种选择.

工厂模式

封装对象的创建.

简单工厂模式

集中创建对象的代码.

工厂方法模式

定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类.

抽象工厂模式

提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指明具体类.

单件模式

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

命令模式

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

适配器模式

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

外观模式

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

模板方法模式

在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤.

迭代器模式

提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露其内部的表示.

组合模式

允许你将对象组成树形结构来表现”整体/部分的层次结构. 组合能让客户以一致的方式处理个别对象和对象组合.

状态模式

允许对象在内部状态改变时改变它的行为, 对象看起来好像修改了它的类.

代理模式

为另一个对象提供一个替身或占位符以控制对这个对象的访问.

复合模式

复合模式结合两个或以上的模式, 组成一个解决方案, 解决一再发生的一般性问题.

组织设计模式

创建型

涉及到将对象实例化, 这类模式都提供一个方法, 将客户从所需要实例化的对象中解耦.

行为型

涉及到类和对象如何交互及分配职责.

结构型

可以让你把类或对象组合到更大的结构中.

posted @ 2018-01-17 17:13  sid.x  阅读(100)  评论(0)    收藏  举报