首页 > 其他 > 详细

UML和设计模式原则的总结

时间:2021-01-29 23:48:10      阅读:39      评论:0      收藏:0      [点我收藏+]

UML

UML概述:

  统一建模语言(UML)是一种直观化、明确化、构建和文档化软件系统产物的通用可视化建模语言。它捕捉了被构建系统的有关决策和理解用来理解、设计、浏览、配置、维护以及控制系统的信息。可以与所有的开发方法、生命阶段、应用领域和媒介一同使用。它意图统一过去建模技术的经验,将当前软件最佳实践合并至标准的方法,包括语义概念、标记符号和指南、具有静态、动态环境上的和组织性的部分,它可以被具有代码产生和报表生成的交互式可视建模工具所支持。UML规范没有定义标准过程,但可用于迭代的开发过程并支持现有的大多数面向对象的开发过程。UML捕捉系统静态结构和动态行为的信息。还包括用包来分解模型的组织性结构 它允许软件团队将系统分解为可工作的单元对包之间的依赖进行理解和在复杂的开发环境中管理模型单元的版本。UML不是编程语言。

  在UML开发的背后有许多目标,第一个且最重要的目标:UML是所有建模人员可以使用的通用建模语言。最后一个UML目标是在能对众多系统建模的同时,尽可能的简洁。

  UML概念和模型可以被划分为以下的范围:

  1. 静态结构
  2. 动态行为
  3. 实现结构
  4. 模型结构
  5. 扩展结构

UML一览:

  UML视图:UML的各种概念和结构并不存在明显的界线,但为了方便,我们将它们划分至多个视图。视图是表达系统单个方面的UML建模结构的简单子集。视图在最高层次可以划分为三个领域结,构性分类,动态行为和模型管理。结构性分类描述了系统中的事物和事物间的关系。动态行为描述了系统时间上的行为。模型管理描述了用层次式的单元对模型自身的组织。UML还包括欲提供有限但实用扩展能力的若干结构。

  静态视图:静态视图对应用领域的概念建模 以及将内建的概念作为应用实现的一部分。该视图不 描述时间相关的行为 因而是静态的。

  用例视图:用例视图对外部用户称为活动者,所感知的系统功能进行建模。用例是用活动者和系统之间的交互来表达、条理分明的功能单元。用例视图的目的是列举活动者和用例,显示活动者在每个用例中的参与情况。

  交互视图:交互视图描述了实现系统行为角色之间的消息交换序列。

  顺序图:顺序图表示了随时间安排的一系列消息。

  交互图:协作对交互中存在意义的对象和链建模。对象和链仅在提供的上下文中存在意义。

  状态机视图:状态机对类的对象的可能生命历史建模。状态机包含由迁移连接的状态,每个状态对对 象生命期中的一段时间建模,该时间内对象满足一定的条件。当事件发生时,它可能导致迁移的激发,使对象改变至新状态,当迁移激发时,附属于迁移的动作可能被执行,状态机显示为状态图。

  活动视图:活动视图是用于显示执行某个计算过程中的运算活动的状态机的一种变形,活动状态表现了一项活动工作流的步骤或操作的执行,活动图描述了顺序和并发活动分组,活动视图表达为活动图。

  物理视图:前面的视图从逻辑角度对应用中的概念建模,模型由一系列包含模型元素(如类 状态机 用例)的包构成,包可以包含其它包,因此模型指派了一个根包,间接包含了模型的所有内容,包是操纵包内容,以及访问控制和配置控制的单元。每个模型元素被包或其它元素所拥有。

  模型管理视图:模型管理视图对模型本身的组织建模。

  扩展结构:包含了三种扩展结构:约束,版型,标签值,约束是用某种正式语言或自然语言表达的语义关系的文字陈述。版型是基于已有的模型元素。由建模人员修订的新模型元素。标签值是一条可以附加给任何模型元素的命名信息。

静态视图:

  概述:静态视图是UML的基础,模型静态视图的元素是应用中具有意义的概念,包括现实世界概念、抽象概念、实现概念、运算概念、系统中发现的所有概念。静态视图捕获对象结构。静态视图将行为实体描述为离散的模型元素,但它不具有动态行为的细节。静态视图中的关键元素是分类和它们之间的关系。为了便于理解和重用性,大型模型必须划分成较小的单元。对象是建模人员理解和构建系统的分离的单元。分类之间的关系是关联,概括以及各种依赖,包括实现和使用。

  分类:分类是模型中的离散概念,它具有标识,状态,行为和关系。分类的种类包括类,接口和数据类型。其它类型为行为概念,环境事物或实现结构的具体化。这些分类包括用例,活动者,构件结点和子系统。

  关系:分类中的关系指关联,概括,流和各种依赖,包括实现和使用。

  关联:关联描述了系统中对象和其它实例之间离散的连接。

  概括:概括是一般化何具体化描述之间的分类关系。

  继承:每种可概括的元素都具有一系列可继承的属性。

  多重继承:如果分类具有一个以上的双亲,则每个双亲均被继承。

  分类和多重分类,在最简单的公式化中 一个对象只具有一个直接类。

  静态和动态分类:在最简单的公式化中,对象在创建后可能无法改变自己的类。

  实现:实现关系将一个模型元素,连接至另一个提供了行为说明而无结构或实现的模型元素。

  依赖:依赖指明了两个或两个以上模型元素之间语义的关系。

  约束:UML为图形建模提供了一系列概念和关系,然而某些情况使用文字表达更加可行,约束是表现为给定语言中字符串的布尔表达式。自然语言,集合理论化语言,约束语言或各种编程语言均可以用于表达约束。

  实例:实例是具有标识的运行实体,它可以与其它运行实体区分,它在任何时刻具有值,值会随时间根据操作发生变化。

  对象图:快照图是某个时间点系统的映象,由于它包含了对象的映象,它被称为对象图。

用例试图:

  概述:用例视图从外部用户的角度捕获系统,子系统或类的行为。它将系统功能划分为对活动者具有意义的事务,这些功能片被称为用例。

  活动者:活动者是与系统,子系统或类交互的外部人员,进程或事务的理想化。

  用例:用例是系统单元提供的外部可感知的功能单元,表达成系统单元和与之相交互的一个或多个活动者的消息序列。

设计模式原则

单一职责原则

  定义:应该有且仅有一个原因引起类的变更。

  优点:

  1. 类的复杂性降低,实现什么职责都有清晰明确的定义;
  2. 可读性高,复杂性降低,可读性自然就提高了;
  3. 可维护性提高,可读性提高了,那自然更容易维护了;
  4.  变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

里氏替换原则

  定义:子类可以扩展父类的功能,但不能改变父类原有的功能。

  优点:

  1. 代码共享,减少创建类的工作量,每个子类都拥有父类的属性和方法;
  2. 提高代码的重用性;
  3. 子类可以形似父类,但又异于父类;
  4. 提高代码的可扩展性;
  5. 提高产品或项目的开放性。

  缺点:

  1. 继承是侵入性的。只要继承,就必须拥有父类的属性和方法。
  2. 降低代码的灵活性。
  3. 子类会多一些父类的约束。
  4. 增强了耦合性。
  5. 当父类的常量、变量、方法被修改时,需要考虑子类的修改。

依赖倒置原则

  定义:是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

  依赖倒置原则的使用建议:

  1. 每个类尽量都有接口或抽象类,或者接口和抽象类两者都具备。
  2. 变量的表面类型尽量是接口或抽象类。
  3. 任何类都不应该从具体类派生。
  4. 尽量不要重写基类的方法。如果基类是一个抽象类,而且这个方法已经实现了,子类尽量不要重写。
  5. 结合里氏替换原则使用。

接口隔离原则

  接口隔离原则强调:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

  总结:接口隔离原则的思想在于建立单一接口,尽可能地去细化接口,接口中的方法尽可能少但是凡事都要有个度,如果接口设计过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。

迪米特法则

  迪米特法则又叫做最少知道原则,就是说一个对象应当对其它对象有尽可能少的了解,不要和陌生人说话。强调只和朋友说话,不和陌生人说话。这里的朋友指的是:出现在成员变量,方法输入,输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。迪米特法则初衷在于降低类之间的耦合。由于每个类尽量减少对其它类的依赖,因此。很容易使得系统的功能模块独立,相互之间不存在(或很少有)依赖关系 

开放-关闭原则

  定义:开闭原则是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。也就是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。

  优点:

  1. 能够扩展已存在的系统,能够提供新的功能满足新的需求,因此该软件有着很强的适应性和灵活性。
  2. 已存在的模块,特别是那些重要的抽象模块,不需要被修改,那么该软件就有很强的稳定性和持久性。

  总结:OCP 可以具有良好的可扩展性,可维护性。不可能让一个系统的所有模块都满足 OCP 原则,我们能做到的是尽可能地不要修改已经写好的代码,已有的功能,而是去扩展它。    

UML和设计模式原则的总结

原文:https://www.cnblogs.com/-rendong/p/14346552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!