没有合适的资源?快使用搜索试试~ 我知道了~
引入设计模式的作用1. 设计模式提供了与其他开发人员共享的词汇表。a) 使用模式和其他开发人员沟通时不仅仅传递了模式名称,还包含整套质量属性、特征和约束。b)
资源详情
资源评论
资源推荐
软件系统设计 设计模式
一、 软件设计引入
需求定义系统需要满足的目标(用户需求指出了目标,比如在线会议的目标是能够
看到人员、听到声音等)。
规约定义系统的外部可观察行为。
架构定义系统级的主要组成部分、各部分之间的互动方式、使用的技术(比如在线
会议需要前端、操作系统调用功能部分、网络部分以及部分之间的联系,使用什么技术
等等)。
设计定义如何完成任务、编写代码,我们关注面向对象设计。
二、 面向对象设计
(一) 什么是面向对象设计 OOD
面向对象对象设计是将实现的约束条件(性能约束、应对变化的需求等)应用到面
向对象分析所产生的概念模型(对应问题域,如数据库、文件、用户界面、算法等)的
过程(问题驱动)。
(二) 系统设计步骤
1. 用方法和属性来描述用于构成系统的类,得到相应的概念模型。
2. 在概念模型的基础上,添加明显不属于领域的类,比如抽象类和接口。
3. 描述类是如何构成组件的。
(三) OOA、OOD 和 OOP
针对已有的系统架构(包含不同组件),针对问题进行面向对象分析,得到 OOA 的
概念模型,然后进行 OOD 的面向对象设计添加明显不属于领域的类,最后我们将 OOD
得到的结果映射到 OOP 中。
(四) 面向对象设计的困难
面向对象设计的困难是将系统分解成对象。对象可能来自于分析模型、实现空间
(数据库、文件、UI、IPC)等,当然也可能其他类没有这样的类(使得特殊的设计更
通用,比如策略模式)。
从 OOA 到 OOD 没有循序渐进的简单方式,虽然 OOA 以直接的方式给出了问题
域组件,但是还需要经验才能完成从 OOA 到 OOD 的转变。
(五) 软件系统设计经验
经验丰富的设计师可以看到同样的老问题反复出现,每次遇到类似的问题,设计师
都会从行而有效的东西(设计原则以及经典的设计经验)入手。
三、 面向对象设计原则
(一) 面向对象设计原则
可维护性低的软件设计的原因:过于僵硬(硬编码)、过于脆弱(修改导致的未知
影响)、复用率低(不可黑盒使用)、粘度过高(架构需要修改)
好的系统设计应具备的性质:可扩展性、灵活性和可插入性。
(二) 软件的可维护性和可复用性
软件的复用或重用优点:提高软件的开发效率,提高软件质量,节约开发成本
1. 合适复用可以改善系统的可维护性。
2. 部分复用可能破坏系统的可维护性,比如 A 和 B 修改 C,如果 A 需要 C 多提
供一个行为,而 B 不需要则会有问题。
面向对象设计复用的目标在于实现支持可维护性的复用。
在面向对象设计中,可维护性复用都是以面向对象设计原则为基础的。
面向对象设计原则也是对系统进行合理重构的指南针。
重构是在不改变软件现有功能的基础上,通过调整程序代码改善软件质量、性能,
使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
(三) 面向对象设计原则
1. 单一职责原则:实现高内聚、低耦合的指导方针
一个类(大到模块,小到方法)承担的责任越多,被复用的可能性就越小。类的职
责包括数据职责(属性体现)和行为职责(方法体现)两个方面。
单一职责原则实例:登录功能的实现,将 Login 类拆分成右图的三部分,将职责进
行分离。
2. 开闭原则:关键是抽象化
设计模块时,应当保证该模块可以在不被修改的前提下被扩展。还可以通过对可变
性封装原则(Principle of Encaspsulation of Variation, EVP)来描述。
开闭原则实例:图形界面下不同形状的按钮,修改为右侧,将代码变为配置 XML
文件,结合反射完成。
3. 里氏代换原则
严格定义:如果对每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,使得以 T
定义的所有程序 P 在所有对象 o2 都替换成 o1 时,程序 P 的行为没有变化,那么类型
S 是类型 T 的子类型。子类不应该是父类的功能的扩展,我们可以使用组合的方式来
扩展功能。
里氏代换原则实例:数据加密,为 CipherA 和 CipherB 设计共同父类,CipherB 在
CipherA 的基础上加密
4. 依赖倒转原则:关键是抽象化,并从抽象中导出具体实现
常见的实现方式:在代码中使用抽象类,而将具体类放在配置文件(将抽象放进代
码,将细节放进元数据)
类之间的耦合:包括零耦合(最好)、具体耦合和抽象耦合关系(依赖倒转要求至
少有一端是抽象的)。
依赖注入
1. 构造注入:通过构造函数注入实例变量
2. 设值注入:通过 Setter 方法注入实例变量
3. 接口注入:通过接口方法注入实例变量
依赖倒转原则实例:数据转换面临增加新的数据源和文件格式的需求。
5. 接口隔离原则
接口隔离原则使用多个专门的接口(仅仅提供客户端需要的行为),而不使用单一
的总接口,每个接口都应该承担一种相对独立的角色。可以在系统设计时采用定制服务
的放肆,为不同的客户端提供宽窄不同的接口。
接口隔离原则实例:从左侧到右侧进行接口拆分。
剩余26页未读,继续阅读
刘璐璐璐璐璐
- 粉丝: 31
- 资源: 326
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0