目录
- 第一章 软件设计模式基础
-
- 1、软件设计模式概述
-
- (1)什么是软件设计模式
- (2)学习设计模式的意义
- (3)软件设计模式的基本要素
- (4)GoF的23种设计模式简介
- 2、UML中的类图
-
- (1)统一建模语言简介
- (2)类、接口、类图
- (3)类之间的关系
- 3.面向对象的设计原则
-
- (1)开闭原则(OCP)
- (2)里氏替换原则(LSP)
- (3)依赖倒置原则(DIP)
- (4)单一职责原则(SRP)
- (5)接口隔离原则(ISP)
- (6)迪米特法则
- (7)合成复用原则(CRP)
第一章 软件设计模式基础
1、软件设计模式概述
(1)什么是软件设计模式
软件设计模式又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目、代码设计经验总结。
(2)学习设计模式的意义
- 可以提高思维能力、编程能力、设计能力
- 使程序设计更加标准化、代码的编制更加工程化、缩短软件开发周期
- 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。
(3)软件设计模式的基本要素
其基本要素有:模式名称、别名、动机、问题、解决方案、效果、结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式等,
其中最关键的元素包括以下四个主要部分:
- .模式名称(Pattern Name)
- 问题(Problem)
- 解决方案(Solution)
- 效果(Consequence)
(4)GoF的23种设计模式简介
设计模式有两种分类方法,即:根据目的分和根据作用的范围分。
根据目的来分:
⑴ 创建型模式:用于描述“怎样创建对象”,它的主要特点是 “将对象的创建与使用分离”。GoF中提供了5种创建型模式。
⑵ 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF中提供了7种结构型模式。
⑶ 行为型模式:用于描述类或对象之间怎样相互协作共同完成 单个对象都无法单独完成的任务,以及怎样分配职责。GoF中提供了 11种行为型模式。
根据作用的范围分:
⑴ 类模式:用于处理类与子类之间的继承关系,这些关系是静态的。
⑴ 对象模式:用于处理对象之间的组合或聚合关系,具动态性。
GOF的23种设计模式分类表
2、接口(Interface):
(3)类之间的关系
1、依赖
-
依赖关系是一种使用关系, 它是对象之间耦合度最弱的一种 关联方式。
-
在代码中,某个类的方法通 过局部变量、方法的参数或者对 静态方法的调用来访问另一个类 (被依赖类)中的某些方法来完 成一些职责
-
带箭头虚线表示,箭头从使用类指向被依赖的类
-
聚合关系是强关联关系,是整体和部分之间的关系,是has-a的关系。
-
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部 分,但是成员对象可以脱离整体对象而独立存在。
-
例如,学校与老师的 关系,学校包含老师,但如果学校停办了,老师依然存在。
-
用带空心菱形的实现表示,菱形指向整体
泛化关系是对象之间耦合度 最大的一种关系,
表示一般与特 殊的关系,是父类与子类之间的关 系,
是一种继承关系, 是is-a的 关系。
用带空心三角形的实线表示,箭头从子类指向父类
3.面向对象的设计原则
(1)开闭原则(OCP)
1、定义
软件实体应当对扩展开发,对修改关闭
2、重要性
- 对软件测试的影响,软件测试时只需要对扩展代码进行测试
- 提高代码的 可复用性
- 提高软件的 可维护性易于扩展和维护
3、实现
通过抽象约束、封装变化来实现
即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,将相同的可变因素封装在相同的具体实现类中。
例:Windows的桌面主题设计
(4)单一职责原则(SRP)
1、定义
一个类应该有且仅有一个引起它变化的原 因,否则类应该被拆分
2、重要性
- 降低类的复杂度。
- 提高类的可读性。复杂性降低,自然其可读性会提高。
- 提高系统的可维护性。可读性提高,那自然更容易维护了。
- 变更引起的风险降低。
3、实现方法
需要设计人员发现类的 不同职责并将其分离,再封装到不同的类或模块中
例:大学学生工作管理程序
- 降低了类之间的耦合度,提高了模块的相对独立性。
- 由于耦合度降低,从而提高了类的可复用率和系统的扩展性。
- 在类的划分上,应该创建弱耦合的类。
- 在类的结构设计上,尽量降低类成员的访问权限。
- 在类的设计上,优先考虑将一个类设置成不变类。
- 在对其他类的引用上,将引用其它对象的次数降到最低。
- 不暴露类的属性成员,而应该提供相应的访问器(set和get方法 )。
- 谨慎使用序列化(Serializable)功能
- 明星由于全 身心投入艺术,所以 许多日常事务由经纪 人负责处理
-
改用聚合关系实现就能很好地解决以上问题
(6)迪米特法则
1、定义
只与你 的直接朋友交谈,不跟“陌生人”说话
朋友”是指:当前对象本身、当前对象的成员对 象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前 对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。
2、重要性
3、实现方法
例:明星与经 纪人的关系实例。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!