设计模式01:概念

2021/5/23 18:28:02

本文主要是介绍设计模式01:概念,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

设计模式01

耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性

设计模式的作用:

  • 代码重用性 (即:相同功能的代码,不用多次编写)
  • 可读性 (即:编程规范性, 便于其他程序员的阅读和理解)
  • 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)
  • 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)
  • 程序呈现高内聚,低耦合的特性

1.设计模式七大原则

  • 单一职责原则
  • 接口隔离原则
  • 依赖倒转(倒置)原则
  • 里氏替换原则
  • 开闭原则
  • 迪米特法则
  • 合成复用原则

1.1 单一职责原则

一个类应该只负责一项职责

  • 降低类的复杂度
  • 提高类的可读性,可维护性
  • 降低变更引起的风险
  • 通常应遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

1.2 接口隔离原则

不应该依赖它不需要的接口

即一个类对另一个类的依赖应该建立在最小的接口

拆分后使得每个类实现对应接口的全部方法

1.3 依赖倒转(倒置)原则

在java中,抽象指的是接口或抽象类,细节就是具体的实现类

  • 高层模块不应该依赖低层模块,二者都应该依赖其抽象
  • 抽象不应该依赖细节,细节应该依赖抽象
  • 依赖倒转(倒置)的中心思想是面向接口编程
  • 依赖倒转原则设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多
  • 使用接口或抽象类的目的是制定规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成

传递依赖:

  • 接口传递
  • 构造方法传递
  • setter传递

注意事项:

  • 低层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好
  • 变量的声明类型尽量是抽象类或接口, 这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序扩展和优化
  • 继承时遵循里氏替换原则

1.4 里氏替换原则

子类中子类可以扩展父类的功能但尽量不要重写父类的方法

在适当的情况下,可以通过聚合,组合,依赖来解决问题

原来的父类和子类都继承一个通用的基类

1.5 开闭原则

最基础、最重要的设计原则

对扩展开放,对修改关闭

用抽象构建框架,用实现扩展细节

提供方扩展开放,使用方对修改关闭

尽量通过扩展软件实体的行为来实现变化,而不是通过修改

1.6 迪米特法则

迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好

尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息

只与直接的朋友通信:

当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等

1.7 合成复用原则

尽量使用合成/聚合的方式,而不是使用继承

2.UML 统一建模语言

软件系统分析和设计的语言工具

一套符号用于描述软件模型中的各个元素和他们之间的 关系,比如类、接口、实现、泛化、依赖、组合、聚合等

  • 用例图(use case)
  • 静态结构图:类图、对象图、包图、组件图、部署图
  • 动态行为图:交互图(时序图与协作图)、状态图、活动图

2.1 UML类图

描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系

可见性的符号:

  • +:表示public
  • -:表示private
  • :表示protected

属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]

方法的完整表示方式是: 可见性 名称(参数列表) [ : 返回类型]

2.2 类的关系

1.关联关系

  • 单向关联:一个顾客有一个地址

  • 双向关联:双方各自持有对方类型的成员变量

  • 自关联:Node类包含类型为Node的成员变量

2.聚合关系

强关联关系,整体和部分之间的关系

成员对象是整体对象的一部分,但成员对象可以独立存在

3.组合关系

更强的聚合关系

整体对象可以控制部分对象的生命周期,没有整体也不存在部分

4.依赖关系

耦合度最弱的一种关联,临时性:局部变量、方法的参数或者对静态方法的调用

5.继承关系:泛化关系

耦合度最大的一种关系,表示一般与特殊的关系

6.实现关系

接口与实现类之间的关系,实现了接口中所声明的所有的抽象操作

2.3 时序图

显示对象之间交互的图

按时间顺序排列

建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。

1.对象

矩形表示,命名方式:

  • 对象名和类名 loginServiceObject:LoginService
  • 只显示类名,为一个匿名类 :LoginService
  • 只显示对象名, loginServiceObject:

对象置于时序图的顶部说明在交互开始时对象就已经存在了;

如果对象的位置不在顶部, 表示对象是在交互的过程中被创建

2.生命线

垂直的虚线

表示时序图中的对象在一段生命周期内存在

每个对象底部中心的位置都带有生命线

3.消息

两个对象之间的单路通信. 从发送方指向接收方



这篇关于设计模式01:概念的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程