《Head First 设计模式》总结

复合模式——模式的模式


MVC(模型-视图-控制器):是由数个设计模式结合起来的模式。

戴着模式的有色眼镜看MVC:

模型利用观察者模式让控制器和视图可以随最新的状态改变而更新。

  模型对视图和控制器一无所知,它们之间是完全解耦的,模型只知道有一些观察者它需要通知。模型还提供一些接口,供视图和控制器获得并设置状态。

  视图和控制器实现了策略模式。控制器是视图的行为,如果你希望有不同的行为,可以直接换一个控制器。

  视图内部使用组合模式来管理窗口、按钮以及其他显示组件。……

MVC与Web

  Web开发人员适配MVC,使它符合浏览器/服务器模型。我们称这样的适配为Model 2,并使用Servlet和JSP技术的结合来达到MVC的分离效果。

Model 2

  1. 发出一个会被Servlet收到的HTTP请求。
  2. Servlet扮演控制器。
  3. 控制器将控制权交给视图。
  4. 模型通过JavaBean获得。
  5. 视图通过HTTP将页面返回浏览器。

设计原则


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

设计模式及其描述


模式 描述
策略 封装可以互换的行为,并使用委托来决定要使用哪一个。
观察者 让对象能在对象改变时被通知。
装饰者 包装一个对象,以提供新的行为。
工厂方法 由子类决定要创建的具体类是哪一个。
抽象工厂 允许客户创建对象的家族,而无需指定他们的具体类。
单件 确保有且只有一个对象被创建。
命令 封装请求成为对象。
适配器 封装对象,并提供不同的接口。
外观 简化一群类的接口。
模板方法 由子类决定如何实现一个算法中的步骤。
迭代器 在对象的集合之中游走,而不暴露集合的实现。
组合 客户用一致的方式处理对象集合和单个对象。
状态 封装了基于状态的行为,并使用委托在行为之间切换。
代理 包装对象,以控制对此对象的访问。

模式分类


 

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

行为型:涉及到类和对象如何交互及分配职责。

结构型:把类或对象组合到更大的结构中。

剩下的模式


桥接(Bridge)

生成器(Builder):封装一个产品的构造过程,并允许按步骤构造。

责任链(Chain of Responsibility):让一个以上的对象有机会能够处理某个请求的时候。

蝇量(Flyweight):让某个类的一个实例能用来提供许多“虚拟实例”。

解释器(Interpreter)

中介者(Mediator)

备忘录(Memento):让对象返回之前的状态

原型(Prototype):创建给定类的实例的过程很昂贵或很复杂。

访问者(Visitor)

原文地址:https://www.cnblogs.com/-1307/p/6445267.html