设计模式
2016-06-27 09:13:24 0 举报
AI智能生成
设计模式是一种解决软件设计问题的经验总结,它为开发人员提供了一套经过验证的解决方案,用于处理常见的设计问题。设计模式可以帮助开发人员提高代码的可读性、可维护性和可扩展性,从而提高软件质量和开发效率。设计模式通常包括类和对象之间的关系、交互和职责分配等方面的内容。常见的设计模式有单例模式、工厂模式、观察者模式等。设计模式的学习和应用对于软件开发人员来说非常重要,它可以帮助他们更好地理解软件设计的基本原则和方法,从而编写出更加优秀的代码。
作者其他创作
大纲/内容
概述
设计模式PD
为解决某些问题而设计的解决方案,可作为通用原则(General Principles)和惯用法(Idioms),用于指导软件设计
模型名+问题+解决方案
GRASP模式
概述
职责分配原则作为设计模式来描述对象设计和职责分配的基本原则
GRASP1
信息专家
问题:给对象分配职责的基本原则是什么?
解决方案:
将职责分配给具有完成该职责所需信息的那个类
低耦合
问题:如何减少因变化产生的影响?
解决方案:分配职责以使(不必要的)耦合保持在较低的水平。使用该原则对可选方案进行评估
控制器
问题:在UI层之上首先接收和协调控制系统操作的对象是什么?
解决方案:
将接收或处理系统事件消息的职责分派给代表下列事务的类:
代表全部“系统”或“根对象”,如MonopolyGame对象
代表运行软件的设备,如Phone,BankCashMachine
代表用例或会话出现。通常命名为<用例名>Handler, <用例名>Session。如,PlayMonopolyGameHandler。
高内聚
问题:怎么使对象保持有内聚、可理解和可管理,同时具有支持低耦合的附加作用?
解决方案:职责分配应保持高内聚,依此来评估备选方案。
创建者
问题:谁创建A?
解决方案:
如果以下条件之一成立,则可以将创建类A实例的职责分配给类B。
B包含或组成聚集了A;
B记录了A;
B紧密地使用A;
B具有A的初始化数据
GRASP2
纯虚构
问题:为了让设计更清晰而不想破坏高内聚和低耦合,应采用什么方案?
解决方案:分配这组高内聚的职责给一个人造类。人造类不代表问题领域的任何事物
只是为了支持高内聚、低耦合和可重用而虚构的一个类
间接性
问题:为了避开两个或多个事物之间直接耦合,该如何分配职责?
如何使对象解耦,以支持低耦合并提高利用性潜力
解决方案:将职责分配给中介对象,使其作为其它构件或服务之间的媒介
以避免它们之前的直接耦合
防止变异
问题:如何设计对象、子系统和系统,使内部的变化或者不稳定性不会对其他元素产生不良影响?
解决方案:识别预计变化或不稳定之外,分配职责用以在这些变化之外创建稳定接口
多态
问题:如何基于类型选择?如何创建可插拔的软件构件?
解决方案:当相关的或行为虽类型(类)有所不同,使用“多态操作”为变化的类型分配职责
GoF模式
适配器
问题:如何解决不相容的接口问题,或者说如何为具有不同接口的相似组件提供一个稳定的接口?
解决方案:通过一个中间的适配器对象,使一个组件的原有接口转变成另一个接口。
工厂
问题:谁有责任创建一些特殊考虑的对象?比如说有复杂的创建逻辑,为了更好的内聚性而希望分离创建职责。
解决方案:创建一个称为工厂(Factory) 的纯虚构对象来处理这种创建。
单例
问题:如何使一个类严格地只有一个实例
解决方案:对类定义静态方法以返回单实例
策略
问题:如何设计变化但相关的算法或策略?如何设计才能使这些算法或策略具有可变更的能力?
解决方案:在单独的类中分别定义每种算法/策略,并且使其具有共同接口
组合
问题:如何能够像处理非组合(原子)对象一样,(多态地)处理一组对象或具有组合结构的对象呢?
解决方案:定义组合和原子对象的类,使它们实现相同的接口
外观
观察者
发布订阅
命令
代理
架构模式
分层
0 条评论
下一页