C++设计模式-单例模式理论与实例
目录
单例模式基本概念
举个栗子
单例模式基本概念
大多数试试,一件产品简单,职责单一就是最好的选择;
就一个类而言,应该仅有一个引起他变化的原因【ASD】;
单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因;
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏【ASD】;
软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离【ASD】;
如果能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责【ASD】;
要在类的职责分离上多考虑,做到单一职责,这样代码才易维护、易扩展、易复用、灵活多样;
举个栗子
单例模式:
一个类只能创建一个对象
构造函数:
1.不能实例化对象,是private/protected的
2.通过静态成员函数申请对象空间,并返回地址
3.定义一个静态标记,记录对象个数,并控制
4.析构函数,将标记清空,以达到重复申请对象的目的
源码如下:
#include <iostream>
using namespace std;class Base{public:static int nFlag;static Base *CreateOJ(){if(1 == nFlag){nFlag = 0;7return (new Base);}elsereturn NULL;}~Base(){nFlag = 1;}private:Base(){}Base(int a){}Base(const Base &a){}Base &operator = (Base &a){}
};int Base::nFlag = 1;void main(){Base *base1 = Base::CreateOJ();Base *base2 = Base::CreateOJ();delete base1;base1 = NULL; //避免指针悬挂Base *base3 = Base::CreateOJ();delete base3;getchar();
}
程序的逻辑:把所有构造函数私有,利用静态函数和成员的特点让某个类仅可创建一次;
程序运行截图,在delete base1前:
在delete base3前
C++设计模式-单例模式理论与实例相关推荐
- java 单例模式 泛型_设计模式之架构设计实例(工厂模式、单例模式、反射、泛型等)...
设计模式, 架构设计实例, 使用到了工厂模式.单例模式.反射.泛型等 项目包结构如下图: 1.bean包 (1)Base.java父类 package test.bean; public class ...
- Java设计模式——单例模式
单例模式 1.什么是单例模式. 2.单例设计的几种实现方式. 2.1.懒汉式 2.2.饿汉式 2.3.登记式 3.总结 4.建议 1.什么是单例模式. 确保某一个类只有一个实例,并且提供一个全局访问点 ...
- Python设计模式-单例模式
Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...
- Android设计模式——单例模式(Singleton)
二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元 ...
- 【学习笔记】ABAP OOD设计模式 - 单例模式
ABAP OOD设计模式 - 单例模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 单例模式(Singleton Pattern)是常用的且较为简单的软件设计模式 ...
- Go 语言实现 23 种设计模式 单例模式
Go 语言实现 23 种设计模式 单例模式 单例模式 单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例.使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管 ...
- C++设计模式-单例模式(双重锁定)
目录 基本概念 代码与实例 基本概念 单例模式以前都出过一个了,再次只粗略讲下! 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 其中UML图如下(来自于大话设计模式) 代码与实例 下 ...
- java singleton inner class_Java面向对象设计模式-单例模式
Java面向对象设计模式-单例模式 2020-05-28 589 0 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点,有多重实现方式. 一.饿汉式单例模式,构造方法私有化,在加载类Sin ...
- Java开发中常用的设计模式-单例模式
单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...
最新文章
- 远心镜头技术及其选型介绍
- 小A与任务 (贪心 优先队列)
- JavaScript引用类型之Array数组之强大的splice()方法
- ehcache.xsd
- 前端相对路径 与后端相对路径的区分
- 机器人弧焊焊钳型号_Delmia机器人仿真编程 第4节 创建资源库
- Mysql:替换某个字段中的部分字符串——replace函数
- 三个数差的平方公式推导过程_勾股数公式的简单推导
- 你不可不看的 Oracle RAC 日常基本维护命令
- python end用法_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)
- java 下载速度计算_测量Java下载速度
- 一个java swt桌面程序开发到打包的总结(1)(收集)
- 需求与商业模式创新-需求考试复习
- juqery addClass方法失效问题
- Ansible 进阶 (1) inventory
- 国产设计软件都有哪些,国产设计工具推荐
- CentOS 7.0全自动安装光盘制作详解
- 算法初探系列4 - 广度优先搜索之图上搜索
- vant tabs sticky模式下的bug
- 在线预览PDF文件功能实现