目录

单例模式基本概念

举个栗子


单例模式基本概念

大多数试试,一件产品简单,职责单一就是最好的选择;
就一个类而言,应该仅有一个引起他变化的原因【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++设计模式-单例模式理论与实例相关推荐

  1. java 单例模式 泛型_设计模式之架构设计实例(工厂模式、单例模式、反射、泛型等)...

    设计模式, 架构设计实例, 使用到了工厂模式.单例模式.反射.泛型等 项目包结构如下图: 1.bean包 (1)Base.java父类 package test.bean; public class ...

  2. Java设计模式——单例模式

    单例模式 1.什么是单例模式. 2.单例设计的几种实现方式. 2.1.懒汉式 2.2.饿汉式 2.3.登记式 3.总结 4.建议 1.什么是单例模式. 确保某一个类只有一个实例,并且提供一个全局访问点 ...

  3. Python设计模式-单例模式

    Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...

  4. Android设计模式——单例模式(Singleton)

    二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元 ...

  5. 【学习笔记】ABAP OOD设计模式 - 单例模式

    ABAP OOD设计模式 - 单例模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 单例模式(Singleton Pattern)是常用的且较为简单的软件设计模式 ...

  6. Go 语言实现 23 种设计模式 单例模式

    Go 语言实现 23 种设计模式 单例模式 单例模式 单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例.使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管 ...

  7. C++设计模式-单例模式(双重锁定)

    目录 基本概念 代码与实例 基本概念 单例模式以前都出过一个了,再次只粗略讲下! 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 其中UML图如下(来自于大话设计模式) 代码与实例 下 ...

  8. java singleton inner class_Java面向对象设计模式-单例模式

    Java面向对象设计模式-单例模式 2020-05-28 589 0 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点,有多重实现方式. 一.饿汉式单例模式,构造方法私有化,在加载类Sin ...

  9. Java开发中常用的设计模式-单例模式

    单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...

最新文章

  1. 远心镜头技术及其选型介绍
  2. 小A与任务 (贪心 优先队列)
  3. JavaScript引用类型之Array数组之强大的splice()方法
  4. ehcache.xsd
  5. 前端相对路径 与后端相对路径的区分
  6. 机器人弧焊焊钳型号_Delmia机器人仿真编程 第4节 创建资源库
  7. Mysql:替换某个字段中的部分字符串——replace函数
  8. 三个数差的平方公式推导过程_勾股数公式的简单推导
  9. 你不可不看的 Oracle RAC 日常基本维护命令
  10. python end用法_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)
  11. java 下载速度计算_测量Java下载速度
  12. 一个java swt桌面程序开发到打包的总结(1)(收集)
  13. 需求与商业模式创新-需求考试复习
  14. juqery addClass方法失效问题
  15. Ansible 进阶 (1) inventory
  16. 国产设计软件都有哪些,国产设计工具推荐
  17. CentOS 7.0全自动安装光盘制作详解
  18. 算法初探系列4 - 广度优先搜索之图上搜索
  19. vant tabs sticky模式下的bug
  20. 在线预览PDF文件功能实现

热门文章

  1. ELT和ETL分不清楚?2张图就能理解透彻
  2. 它有许多功能的局域网
  3. 大白菜ZSKAME下载 2013官方地址
  4. 一般线性规划问题的2阶段单纯形算法
  5. 总结一些C/C++的知识点
  6. c/c++永不过时的编程语言
  7. 下一个系列连载内容是什么?你猜猜
  8. win c语言创建线程,初学者 CWinThread 线程类
  9. r语言worldclim数据_R语言空间数据分析(五):栅格数据处理
  10. python找图里的环_python判断无向图环是否存在的示例