一、什么是设计模式
“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”
——Christopher Alexander
尽管Alexander所指的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式。
受Alexander的启发,Erich Gamma、Richard Helm、Ralph Johnson、Jshn Vlissides四人(人称Gang Of Four,GOF)总结了23种常见的软件开发设计模式
这23种设计模式并不描述新的或未经证实的设计,而是经过验证,用于解决在特定环境下、特定问题的解决方案。
1.1 设计模式四要素
模式名称:助记名,便于记忆和交流
问题:交代特定的问题场景
解决方案:确定了所包含的类和实例,它们的角色、协作方式以及职责分配
效果:使用此解决方案之后所带来的最终效果
1.2 为什么需要学习设计模式
1.设计模式已成为软件开发行业的“标准词汇”
2.个人技术提高的必备知识
3.无须重复造轮子二、设计模式的分类
GOF将设计模式分为23种设计模式,其中分为三大类
2.1 创建型模式
抽象了对象实例化的过程,用来帮助创建对象的实例
2.2 结构型模式
描述如何组合类和对象以获取更大的结构
2.3 行为型模式
描述算法和对象间的职责分配
2.4 设计模式总览
设计模式总览
上面标红色五角星的为必须理解透彻的设计模式三、UML类图为了更好的学习和理解设计模式,学习设计模式之前,需要掌握UML类图
3.1 UML类图
UML,全称:统一建模语言(Unified Modeling Language)它是让系统可视化的表现手段。
UML类图主要用来表示类、接口、实例之间相互的静态关系。本系列使用Java语言作为代码演示,约定Java的字段属性与UML的属性(Attribute)对等,Java的方法与UML的操作(Operation)对等。
UML类图表示
3.2 UML类图几种关系
UML中四种重要关系
1.依赖关系(dependency)
它描述一个对象在运行期会使用到另一个对象的关系。依赖是一种临时性的关系,通常都是在运行期间产生,并随着运行场景的不同,依赖关系也可能发生变化
比如人和船这两个对象,如果场景是:开动轮船,那么船依赖于人。如果场景是:渡海,那么人依赖于船
依赖关系
2.泛化(generalization)
说明两个对象之间的继承关系。被继承的类称为父类,继承的类称为子类
继承关系
3.实现(realization)
描述在一个类中描述,具体实现由另一个类在实现细节
实现关系
!4.关联(association)
描述了一个事物对象与另一个事物对象相关联。其中关联又具体分为:聚合关系、组合关系。聚合关系:表达整体由部分构成。例如:一个班级由多个学生构成。
聚合关系组合关系:表达整体拥有部,是一种强依赖的聚合关系。例如:人体是由头部和眼睛组成.
组合关系