参考博客:https://blog.csdn.net/weixin_45712636/article/details/124328504
参考视频:https://www.bilibili.com/video/BV1Np4y1z7BU?p=1&vd_source=fce372ba0aa0bf9ed76094e3192b7015
参考文档:https://bright-boy.gitee.io/technical-notes/#/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/index
1. 设计模式概述
1.1 设计模式产生背景
设计模式最开始被用在建筑领域设计中,在1995年在《设计模式:可复用面向对象软件的基础》一书中正式提出23中设计模式。
1.2 软件设计模式概念
设计模式是一套被反复使用、经过分类编目和代码设计经验的总结,描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。
1.3 设计模式的必要性
正确使用设计模式具有以下优点:
- 提高程序员的思维、编程和设计能力;
- 程序设计标准化,编码工程化,提高开发效率。缩短开发周期;
- 提高代码的可重用行、可读性、可靠性、灵活性和可维护性。
1.4 设计模式分类
- 创建型模式
用于描述“怎样创建对象”,特点是将对象的创建和使用分离。 单例、原型、工厂、抽象工厂、建造者模式 5种。
- 结构型模式
用于描述如何将类或者对象按某种布局组成更大的结构。代理、适配器、桥接、装饰、外观、享元、组合模式 7种。
- 行为型模式
用于描述类或者对象之间怎样互相协作完成单个对象无法单独完成的任务,以及怎样分配职责。模板、策略、命令、职责、状态、观察者、中介者、迭代器、访问者、备忘录、解释器共11种。
2. UML
统一建模语言(Unified Modeling Language, UML),用来设计软件的可视化建模语言。
UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构建图、部署图。
2.1 类图
类图(Class diagram),显示模型的静态结构,特别是模型中存在的类、类的内部结构以及与其他类的关系等。
2.1.1 类的表示方法
类图中,类包含类名、属性(field)和方法(method),且用带有分割线的矩形来表示。比如下图表示的一个Employee类,包含name、age、address 3个属性和1个work()方法。
表示可见性的三种符号:
- + : public
- - : private
- # : protected
属性的表示方式:可见性 名称 : 类型 【=缺省值】
方法的表示方式:可见性 名称(参数列表):【:返回类型】
2.1.2 类与类之间关系的表示方式
略。参考文档吧
1. 关联
关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。我们先介绍一般关联。
关联又可以分为单向关联,双向关联,自关联。
- 单向关联
在UML类图中单向关联用一个带箭头的实线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。
- 双向关联
- 自关联
2. 聚合
3. 组合
4. 依赖
5. 继承
6. 实现
3. 设计原则
3.1 开闭原则
3.2 里氏代换原则
3.3 依赖倒转原则
3.4 接口隔离原则
3.5 迪米特法则
3.6 合成复用法则
4. 创建者模式
4.1 单例模式 Singleton
一个类只创建一个唯一的对象,即一次创建多次使用。
实现单例模式的步骤:
1、构造函数私有化
2、增加静态私有的当前类的指针变量
3、提供静态对外接口,可以让用户获得单例对象
单例设计模式分类两种:
- 饿汉式:类加载就会导致该单实例对象被创建
还没有使用该单例对象,该单例对象就已经被加载到内存了,在对象过多时会造成内存浪费
- 懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建
解决了饿汉式内存浪费问题,但是线程不安全的,可以通过互斥量mutex.lock()和mutex.unlock()来解决
4.2 工厂模式
4.3 抽象工厂模式
4.4 原型模式
4.5 建造者模式
标签:对象,类图,模式,关联,C++,单例,设计模式 From: https://www.cnblogs.com/astonc/p/17604587.html