一、 UML总结
(一) UML简述
UML(统一建模语言)是一种直观化 明确化 构建和文档化软件系统产物的通用可视化建模语言,不是编程语言。UML可以与所有的开发方法 生命阶段 应用领域和媒介一同使用。UML包括语义概念 标记符号和指南 具有静态 动态 环境上的和组织性的部分。UML规范没有定义标准过程 但可用于迭代的开发过程 并支持现有的大多数面向对象的开发过程。
UML捕捉系统静态结构和动态行为的信息。
UML还包括用包来分解模型的组织性结构。
UML不是编程语言,UML不是用于定理证明的高度正式的语言,UML是通用性的建模语言,UML是离散的建模语言,它不打算对如工程和物理的连续系统建模,UML是对诸如软件、
硬件或数字逻辑的离散系统建模的通用语言。
(二) UML概念范围
UML概念和模型可以被划分为以下的范围:、静态结构、动态行为、实现构造、模型组织、扩展机制
(三) UML视图
视图在最高层次可以划分为三个领域:结构性分类、动态行为、模型管理
结构性分类描述了系统中的事物和事物间的关系。分类包括类、用例、构件和结点。分
类提供了动态行为构建的基础。分类视图包括静态视图、用例视图和实现视图。
动态行为描述了系统时间上的行为。行为可以用静态视图中系统快照的一系列变更来描
述。行为视图包括状态机图、活动图和交互图。
模型管理描述了用层次式的单元对模型自身的组织。包是模型的通用组织单元。特殊的
包包括模型和子系统。模型管理视图与其它视图相交迭,为团队工作和配置控制把它们组
织起来。
1. 静态视图
静态视图是UML的基础。静态视图捕获对象结构。静态视图将行为实体描述为离散的模型元素,但它不具有动态行为的细节。它将实体认为是被命名的,为类所拥有的或调用的事物。静态视图中的关键元素是分类和它们之间的关系。 分类是描述事物的模型元素。分类之间的关系是关联、概括,以及各种依赖,包括实现和使用。
2. 用例视图
用例视图从外部用户的角度捕获系统、子系统或类的行为。它将系统功能划分为活动者(系统的理想用户)具有意义的事务。 这些功能片被称为用例。用例通过系统与一个或多个活动者之间的一系列消息描述了与活动者的交互。
二、 设计模式原则
(一) 单一职责原则
单一职责原则定义:应该有且仅有一个原则引起类的变更
单一职责原则的好处:
1.类的复杂性降低,实现什么职责都有清晰明确的定义
2.可读性提高,复杂性降低,可维护性提高,更容易维护了,
3.变更引起的风险降低,对系统的扩展性、维护性都有非常大的帮助。
单一职责原则很难在项目中得到体现,单一职责适用于接口、类同时也适用于方法
对于单一职责原则,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
(二) 里氏替换原则
里氏替换原则的定义:
1. 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象01都代换成02时,程序P的行为没有发生变化,那么类型S是类型T的子类型
2. 所有引用基类的地方必须能透明地使用其子类的对象。
里氏替换原则为良好的继承定义的规范的含义:
- 子类必须完全实现父类的方法
- 子类可以有自己的个性
- 覆盖或实现父类的方法时输入参数可以被放大
- 覆写或实现父类的方法时输出结果可以被缩小
采用里氏替换原则时,尽量避免子类的个“性”
(三) 依赖倒置原则
依赖倒置原则定义:
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象,
- 抽象不应该依赖细节;
- 细节应该依赖抽象
采用依赖倒置原则可以减少类间的耦合性,提高系统间的稳定性,降低并行开发引起的风险,提高代码的可读性和维护性。
依赖的三种写法:
- 构造函数传递依赖对象
- Setter方法传递依赖对象
- 接口声明依赖对象
(四) 接口隔离原则
接口隔离原则定义:接口尽量细化,同时接口中的方法尽量少
接口隔离原则要求接口的方法尽量少,则把一个臃肿的接口变更为两个独立的接口所依赖的原则就是接口隔离原则,其对接口进行规范约束,包含接口尽量小、接口要高内聚、定制服务、接口设计有限度这四层含义。
(五) 迪米特法则
迪米特法则描述的规则是:一个对象应该对其他对象有最少的了解。
其对类的低耦合性提出了明确的要求:只和朋友交流、朋友间也有距离、是自己的就是自己的(如果一个方法放在本类中,即不增加类间关系,也对本类不产生负面影响,就放置在本类中)、谨慎使用Serializable。
(六) 开闭原则
开闭原则的定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。
开闭原则的定义已经非常明确地告诉我们,软件实体应该对扩展开放,对修改关闭其含义义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。
开闭原则的使用性:
1、只要是面向对象的编程,在开发过程中都会强调开闭原则
2、是最基础的设计原则,其他五个设计原则都是开闭原则的具体形态
3、可以提高代码的复用性
4、可以提高代码的可维护性