软件设计模式–第一章 软件设计模式基础

目录

  • 第一章 软件设计模式基础
    • 1、软件设计模式概述
      • (1)什么是软件设计模式
      • (2)学习设计模式的意义
      • (3)软件设计模式的基本要素
      • (4)GoF的23种设计模式简介
    • 2、UML中的类图
      • (1)统一建模语言简介
      • (2)类、接口、类图
      • (3)类之间的关系
    • 3.面向对象的设计原则
      • (1)开闭原则(OCP)
      • (2)里氏替换原则(LSP)
      • (3)依赖倒置原则(DIP)
      • (4)单一职责原则(SRP)
      • (5)接口隔离原则(ISP)
      • (6)迪米特法则
      • (7)合成复用原则(CRP)

第一章 软件设计模式基础

1、软件设计模式概述

(1)什么是软件设计模式

软件设计模式又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目、代码设计经验总结。

(2)学习设计模式的意义

  • 可以提高思维能力、编程能力、设计能力
  • 使程序设计更加标准化、代码的编制更加工程化、缩短软件开发周期
  • 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

(3)软件设计模式的基本要素

其基本要素有:模式名称、别名、动机、问题、解决方案、效果、结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式等,

其中最关键的元素包括以下四个主要部分:

  • .模式名称(Pattern Name)
  • 问题(Problem)
  • 解决方案(Solution)
  • 效果(Consequence)

(4)GoF的23种设计模式简介

设计模式有两种分类方法,即:根据目的分根据作用的范围分

根据目的来分

创建型模式:用于描述“怎样创建对象”,它的主要特点是 “将对象的创建与使用分离”。GoF中提供了5种创建型模式。

结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF中提供了7种结构型模式。

行为型模式:用于描述类或对象之间怎样相互协作共同完成 单个对象都无法单独完成的任务,以及怎样分配职责。GoF中提供了 11种行为型模式。

根据作用的范围分

类模式:用于处理类与子类之间的继承关系,这些关系是静态的。

对象模式:用于处理对象之间的组合聚合关系,具动态性。

GOF的23种设计模式分类表

2、接口(Interface):

(3)类之间的关系

1、依赖

  • 依赖关系是一种使用关系, 它是对象之间耦合度最弱的一种 关联方式。

  • 在代码中,某个类的方法通 过局部变量、方法的参数或者对 静态方法的调用来访问另一个类 (被依赖类)中的某些方法来完 成一些职责

  • 带箭头虚线表示,箭头从使用类指向被依赖的类

  • 聚合关系是强关联关系,是整体和部分之间的关系,是has-a的关系。

  • 聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部 分,但是成员对象可以脱离整体对象而独立存在。

  • 例如,学校与老师的 关系,学校包含老师,但如果学校停办了,老师依然存在。

  • 用带空心菱形的实现表示,菱形指向整体

  • 泛化关系是对象之间耦合度 最大的一种关系,

  • 表示一般与特 殊的关系,是父类与子类之间的关 系,

  • 是一种继承关系, 是is-a的 关系。

  • 用带空心三角形的实线表示,箭头从子类指向父类

  • 3.面向对象的设计原则

    (1)开闭原则(OCP)

    1、定义
    软件实体应当对扩展开发,对修改关闭

    2、重要性

    • 对软件测试的影响,软件测试时只需要对扩展代码进行测试
    • 提高代码的 可复用性
    • 提高软件的 可维护性易于扩展和维护

    3、实现

    通过抽象约束、封装变化来实现
    即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,将相同的可变因素封装在相同的具体实现类中。

    例:Windows的桌面主题设计

    (4)单一职责原则(SRP)

    1、定义

    一个类应该有且仅有一个引起它变化的原 因,否则类应该被拆分

    2、重要性

    • 降低类的复杂度
    • 提高类的可读性。复杂性降低,自然其可读性会提高。
    • 提高系统的可维护性。可读性提高,那自然更容易维护了。
    • 变更引起的风险降低

    3、实现方法

    需要设计人员发现类的 不同职责并将其分离,再封装到不同的类或模块中

    例:大学学生工作管理程序

      (6)迪米特法则

      1、定义

      只与你 的直接朋友交谈,不跟“陌生人”说话

      朋友”是指:当前对象本身、当前对象的成员对 象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前 对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。

      2、重要性

      • 降低了类之间的耦合度,提高了模块的相对独立性。
      • 由于耦合度降低,从而提高了类的可复用率和系统的扩展性

      3、实现方法

      1. 在类的划分上,应该创建弱耦合的类。
      2. 在类的结构设计上,尽量降低类成员的访问权限。
      3. 在类的设计上,优先考虑将一个类设置成不变类。
      4. 在对其他类的引用上,将引用其它对象的次数降到最低。
      5. 不暴露类的属性成员,而应该提供相应的访问器(set和get方法 )。
      6. 谨慎使用序列化(Serializable)功能

      例:明星与经 纪人的关系实例。

      • 明星由于全 身心投入艺术,所以 许多日常事务由经纪 人负责处理

    • 改用聚合关系实现就能很好地解决以上问题

      软件设计模式--第一章 软件设计模式基础

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年9月7日
    下一篇 2022年9月7日

    相关推荐