1.设计模式与UML简介

2021年09月16日 阅读数:1
这篇文章主要向大家介绍1.设计模式与UML简介,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1.设计模式

概念

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

重点解析:编程

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

意义

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

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

基本要素

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

1.模式名称

每个模式都有本身的名字,一般用一两个词来描述,能够根据模式的问题、特色、解决方案、功能和效果来命名。模式名称(PatternName)有助于咱们理解和记忆该模式,也方便咱们来讨论本身的设计。设计

2.问题

问题(Problem)描述了该模式的应用环境,即什么时候使用该模式。它解释了设计问题和问题存在的来龙去脉,以及必须知足的一系列先决条件。3d

3.解决方案

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

4.效果

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

2.重构

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

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

简介:

标准建模语言:

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

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

4.UML的基本构件:

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

1-事务

image

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的全局变量。
    image
    表示方法:实线箭头,类A指向类B
聚合
  1. 聚合 (Aggregation) 关系
  2. 聚合是关联关系的一种特例,是强的关联关系。
  3. 聚合是总体和个体之间的关系,即has-a的关系,总体与个体能够具备各自的生命周期,部分能够属于多个总体对象,也能够为多个总体对象共享。
    image
    表示方法:尾部为空心菱形的实线箭头(也能够没箭头),类A指向类B
组合
  1. 组合也是关联关系的一种特例。组合是一种总体与部分的关系,即contains-a的关系,比聚合更强。
  2. 部分与总体的生命周期一致,总体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。
    image
    表示方法:尾部为实心菱形的实现箭头(也能够没箭头),类A指向类B
泛化
  1. 泛化是一种通常与特殊、通常与具体之间关系的描述,具体描述创建在通常描述的基础之上,并对其进行了扩展。
  2. 在程序中经过继承类实现。
    image
    表示方法:空心三角形箭头的实线,子类指向父类
实现

实现是一种类与接口的关系,表示类是接口全部特征和行为的实现,在程序中通常经过类实现接口来描述
image
表示方法:空心三角形箭头的虚线,实现类指向接口

依赖

概念:是一种使用的关系,即一个类的实现须要另外一个类的协助,因此要尽可能不使用双向的互相依赖,在程序中通常表现为类A中的方法须要类B的实例做为其参数或者变量,而类A自己并不须要引用类B的实例做为其成员变量。
image
表示方法:虚线箭头,类A指向类B

3-图

图名称及其解释

image

图的结构

image

实际用途

image