C++设计模式——单例模式
来源:互联网 发布:运行java程序 编辑:程序博客网 时间:2024/06/04 11:54
设计模式并不只是一种方法和技术,更是一种思想、一个方法论。设计模式与具体编程语言无关,其主要目的是使人们可以更加简单方便地复用成功的设计和体系结构、建立面向对象的设计思想、面向接口编程、编写的程序高内聚、低耦合。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
单例模式是创建型模式之一,也是设计模式中最简单的形式之一。有懒汉式、饿汉式、注册式这三种形式。我将先用懒汉式举例。
目的:在系统中,使该类对象的实例只有一个。
动机:从业务角度来分析,在某些情况下,设计者或用户会要求核心对象在系统中只有该类的一个实例。例如多个任务需要调用打印机类的打印方法,而实际情况是计算机连接的打印机只有一个,此时必须限制打印机类的实例个数。
再例如从技术角度来分析,某个类被多个用户共用,但该类包含的数据量非常庞大,相应的方法实现起来也十分复杂。如果在系统中创建该类的多个实例,不仅会严重消耗系统的资源,还有可能使用户接受的数据不一致。此时只需创建该类的一个实例就可以满足用户需求。
实现原理:为了使得系统中只有该类的一个实例,我们不能让客户端可以随意创建该类的对象。那么我就将该类的构造方法私有化(private),使得客户端(即类外环境)无法直接创建类的实例。例如下列语句是错误的
必要条件:
1.将该类的构造方法私有化(private),使得客户端(即类外环境)无法直接创建类的实例。
2.设置一个公有的静态方法,在静态方法中调用构造方法。
3.类中建立一个私有的静态指针,用来存放创建的唯一实例。
懒汉式代码:在客户端需要使用的时候才创建对象。
运行结果:
饿汉式代码:在类初始化时就已经创建了对象。
运行结果:
注册式代码:父类实例指针只有一个实例,可以是父类,也可以是子类。父类、子类被调用时创建实例。
- 设计模式——单例模式(c++)
- 设计模式——单例模式(C++)
- 设计模式—单例设计模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- Elasticsearch
- Matlab学习笔记---find
- 非谓语动词doing作主语/宾语
- 硬链接和软连接
- ContentProvider android:exported="true"
- C++设计模式——单例模式
- 输出一组数据中第一个不重复的字母
- 统计学笔记----箱形图以及python实践
- VirtualBox安装完成后无法启动
- CodeForces 687A NP-Hard Problem 搜索
- 如何防止误删根目录
- IDEA+Maven多Module+spring4.3+springmvc+mybatis+redis整合Demo工程 附github地址
- Makefile的函数addprefix
- 【a903】石子归并