1.设计模式与UML简介

Posted rttrti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.设计模式与UML简介相关的知识,希望对你有一定的参考价值。

1.设计模式

概念

设计模式,即在软件开发领域,经过验证的,用于解决在特定环境下,重复出现特定问题的解决方案。

重点解析:

  1. 经过验证的:必须是经过大家公开验证的解决方案才算得上是设计模式
  2. 特定环境:不要脱离特定环境去使用设计模式,设计时必须考虑这样的代价是否值得,所以有必要考虑下环境。
  3. 重复出现:只有重复出现的问题才有必要形成固定方案,下次使用直接套用就是。
  4. 特定问题:每种模式是针对特定问题的解决方案。

意义

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。

使用优点:
1)可以提高程序员的思维能力、编程能力和设计能力。
2)使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
3)使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

基本要素

软件设计模式使人们可以更加简单方便地复用成功的设计和体系结构,它通常包含以下几个基本要素:模式名称、别名、动机、问题、解决方案、效果、结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式等,其中最关键的元素包括以下 4 个主要部分。

1.模式名称

每一个模式都有自己的名字,通常用一两个词来描述,可以根据模式的问题、特点、解决方案、功能和效果来命名。模式名称(PatternName)有助于我们理解和记忆该模式,也方便我们来讨论自己的设计。

2.问题

问题(Problem)描述了该模式的应用环境,即何时使用该模式。它解释了设计问题和问题存在的前因后果,以及必须满足的一系列先决条件。

3.解决方案

模式问题的解决方案(Solution)包括设计的组成成分、它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象的 组合)来解决这个问题。

4.效果

描述了模式的应用效果以及使用该模式应该权衡的问题,即模式的优缺点。主要是对时间和空间的衡量,以及该模式对系统的灵活性、扩充性、可移植性的影响,也考虑其实现问题。显式地列出这些效果(Consequence)对理解和评价这些模式有很大的帮助。

2.重构

重构:改善既有代码的设计,是一种用于改进现有代码库设计的受控技术。
它的本质是应用一系列小的行为保留转换,每个转换“都太小而不值得做”。但是,每个转换的累积效果都非常显着
通过分步进行,可以降低引入错误的风险;避免在进行重组时损坏系统,这使可以在较长的时间内逐步重构系统。

3.UML-统一建模语言(Unified Modeling Language)

简介:

标准建模语言:

是一种面向对象设计的建模工具
它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持

UML的目标
  1. 以面向对象图的方式来描述任何类型的系统
  2. 对具有静态结构和动态行为的系统建模
UML应用领域:软件系统的模型

4.UML的基本构件:

核心: 模型(现实的简化,真是系统的抽象)
基本构件: 事务、关系和图

1-事务

7种结构事务:

  1. 类: 具有相同属性、方法、关系和语义的对象的集合。
  2. 接口: 指类或组件提供特定服务的一组操作的集合。
  3. 协作:定义了交互的操作,是一些角色和其他元素一起工作,提供一些合作的动作。
  4. 用例:描述一系列的动作,系统执行这些动作将对一个特定参与者产生有价值且可观察的结果。
  5. 活动类:它的对象有一个或多个进程或线程。
  6. 组件:物理上或可替换的系统部分,它实现了一个接口集合。
  7. 节点:节点是一个物理元素,它在运行时存在,代表一个可计算的资源
2种结构事物:
  1. 交互(Interaction): 包括一组元素之间的消息交换。
  2. 状态机 (State Machine): 由一些列对象的状态组成。
1种分组事物

包 (Package):UML中唯一的组织机制。

1种注释事物

注释 (Note) :用于解析说明UML元素。

2-关系

6种关系:
关联 (Association):表示一种拥有的关系,具有方向性。
聚合 (Aggregation):表示整体-个体的关系。
组合 (Composition):表示整体与部分的关系,比聚合更加严格。
泛化 (Generalization):表示一个更泛化的元素与一个更具体元素之间的关系(继承)
实现 (Realization):表示类与接口的关系,类实现接口。
依赖 (Dependency):一个类的改动会影响另外一个类,则两个之间存在依赖关系。

各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

关联
  1. 表示一种拥有的关系,具有方向性
  2. 表示类与类之间的联接,它使一个类知道另一个类的属性和方法,关系一般是长期性的,在程序中被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。

    表示方法:实线箭头,类A指向类B
聚合
  1. 聚合 (Aggregation) 关系
  2. 聚合是关联关系的一种特例,是强的关联关系。
  3. 聚合是整体和个体之间的关系,即has-a的关系,整体与个体可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。

    表示方法:尾部为空心菱形的实线箭头(也可以没箭头),类A指向类B
组合
  1. 组合也是关联关系的一种特例。组合是一种整体与部分的关系,即contains-a的关系,比聚合更强。
  2. 部分与整体的生命周期一致,整体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。

    表示方法:尾部为实心菱形的实现箭头(也可以没箭头),类A指向类B
泛化
  1. 泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。
  2. 在程序中通过继承类实现。

    表示方法:空心三角形箭头的实线,子类指向父类
实现

实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述

表示方法:空心三角形箭头的虚线,实现类指向接口

依赖

概念:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖,在程序中一般表现为类A中的方法需要类B的实例作为其参数或者变量,而类A本身并不需要引用类B的实例作为其成员变量。

表示方法:虚线箭头,类A指向类B

3-图

图名称及其解释

图的结构

实际用途

以上是关于1.设计模式与UML简介的主要内容,如果未能解决你的问题,请参考以下文章

UML类图简介

1. UML笔记 - UML与面向对象

Python设计模式 - UML - 类图(Class Diagram)

设计模式之旅1--UML基础

UML统一建模语言简介

[.net 面向对象程序设计深入]UML——在Visual Studio 2013/2015中设计UML类图