什么是设计模式?
Christoppher Alexander说过:"每一个模式描述了一个人在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而不必做重复劳动“。
尽管他说的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式。
一般而言,一个模式有四个基本要素:
1.模式名称 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。
2.问题 描述了应该在何时使用模式。
3.解决方案 描述了设计的组成部分,他们之间的相互关系及各自的职责和协作方式
4.效果 描述了模式应用的效果及使用模式应权衡的问题
总而言之,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。
那我们应该怎么样描述设计模式呢?
我们将用统一的格式描述设计模式,每一个模式根据以下的模板被分成若干部分。
1.模板名和分类 模板名简洁的描述了模式的本质
2.意图 是回答下列的问题的简单陈述:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题
3.别名 模式的其他名称
4.动机 用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情境
5.适用性 什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?你怎么样识别这些情况?
6.结构 采用基于对象建模方式(OMT)【RBP+91】的表示法对模式中的类进行图形描述。
7.参与者 指设计模式中的类和、或对象以及他们各自的职责
8.协作 模式的参与者怎样协作以及实现他们的职责
9.效果 模式怎样支持它的目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变?
10.实现 实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于实现语言的问题
11.代码示例
12.已知应用
13.相关模式 与这个模式紧密相关的模式有哪些?其间重要的不同之处是什么?这个模式应与哪些其他模式一起使用?
那么设计模式怎样解决设计问题呢?
1.寻找合适的对象。面向对象程序由对象组成,对象包括数据和对数据进行操作的过程,过程通常称之为方法或操作。对象在收到客户的请求(或消息)后,执行相应的操作。
面向对象设计方法学支持许多设计方法。你可以写出一个问题描述,挑出名词和动词,进而创建相应的类和操作;或者,你可以关注于系统的协作和职责关系;或者,你可以对现实世界建模,再将分析时发现的对象转化至设计中。至于哪一种方法最好,并无定论。
2.决定对象的粒度 。对象在大小和数目上变化极大。他们能表示下自硬件或上自整个应用的任何事物。那么我们怎样决定一个对象应该是什么呢?设计模式很好的讲述了这个问题。
3.
原文:https://www.cnblogs.com/gekefei/p/12507413.html