NoteDeep

概述

设计模式产生

一个模式的说明应该包括四个项目:
  1. 模式名称(Pattern Name):一个助记名、词汇(描述模式的问题、解决方案和效果)。便于交流和思考,找到恰当的模式名称也是设计模式编目的难点之一。
  2. 问题(Problem):描述了何时使用模式。
  3. 解决方案(Solution):描述了设计的组成成分,他们之间的相互关系及各自的职责和写作方式(抽象级别上的,针对一般设计问题)。
  4. 效果(Consequences):描述了模式应用的效果及使用模式应权衡的问题(时空、灵活性、扩充性、可移植性)。

设计模式的描述

模式的基本元素
GOF的模式描述

为什么要学习设计模式?

  1. 复用解决方案:通过复用已经建立的设计,我为自己的问题找到了更高的起点并避免了绕弯路。我们受益于学习别人的经验。我不必再为普通、重复的问题重新设计解决方案。
  2. 建立通用的术语:交流与协作都需要一个共同的词汇基础、一个对问题的共同观点。设计模式在项目的分析和设计阶段提供了一个通用的参考点。
  3. 更高的分析和设计的视角:在问题上、在设计和面向对象的过程中, 模式给你一个更高层次的视角。这样的视角将你从“ 过早处理细节” 的暴政中解放出来。

设计模式的优点

  • 改善团队和个人学习
  • 代码的可修改性得到改善
  • 设计模式阐述了基本的面向对象原则
  • 对改良策略的采用— 甚至在模式不出现的时候
  • 针对接口编程。
  • 优先使用对象组合, 而不是类继承。
  • 找到并封装变化点。
  • 了解“ 庞大的继承体系” 的替代方案

设计模式空间

  • Creational patterns:Deal with initializing and configuring classes and objects
  • Structural patterns:Deal with decoupling interface and implementation of classes and objects
  • Behavioral patterns:Deal with dynamic interactions among societies of classes and objects

设计模式的特点与应用

设计模式:在特定环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。
类的模型/视图/控制器(MVC:Model/View/Controller)三元组被用来构建应用程序。
MVC包括三类对象:
  • 模型(Model):是应用对象,所有的操作都在这里实现,它若需要取得视图中的对象或更新视图,需通过控制器来进行处理。
  • 视图(View):是模型在屏幕上的表示,模型在进行操作后,其结果是通过视图显示的。
  • 控制器(Controller):用于管理用户与视图发生的交互,定义用户界面对用户输入的响应方式。一旦用户需要对模型进行处理,不能直接执行模型,而必须通过控制器间接实现的。
不使用MVC,用户界面设计往往将这些对象混在一起,而MVC则将它们分离以提高灵活性复用性
MVC通过建立一个“定购/通知”协议来分离视图和模型。视图必须保证它的显示正确地反映了模型的状态。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地得到刷新自己的机会。
  • 表面上看,这个例子反映了将视图和模型分离的设计。然而,这个设计还可以用于解决更一般的问题:
  • 将对象分离,使得一个对象的改变能够影响到另一些对象,而这个对象并不需要知道 那些被影响的对象的细节。这个更一般的模式被描述成Observer模式。
  • Views可以看作一棵树,显然可以用Composite Pattern来实现。
  • MVC允许你在不改变视图外观的情况下改变视图对用户输入的响应方式。
使用模式:
  1. 指定视图缺省控制器的Factory Method。
  2. 用来增加视图滚动的Decorator (装饰器) 。
  3. 主要关系还是由Observer、Composite(组合)和Strategy 三个设计模式给出的。

评论列表

    概述