黑马程序员技术交流社区

标题: 【上海校区】单例模式(C++) [打印本页]

作者: 摩西摩西OvO    时间: 2018-7-25 16:46
标题: 【上海校区】单例模式(C++)

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。<来自百度百科>

简单地说,单例模式表示的含义是某一个类, 在一个进程中只能有唯一的一个对象(实例), 并且在语法角度上进行制约.

单例模式要点
单例模式用途

刚开始接触单例模式的时候,并不知道单例模式的用途是什么,但是其实使用单例模式的地方还是很多的,比如:

如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。

所以: 当实例存在多个会引起程序逻辑错误的时候,请使用单例模式

单例模式的优点
单例模式缺点
单例模式常见两种形式

饿汉模式就是一开始就将资源加再进来,可以说是一空间换时间的一种做法,每次使用的时候直接返回就好了

注意: 饿汉模式不存在线程安全的问题

懒汉模式就是等到实例化对象的时候才将资源加载进来,可以说是以时间换空间的做法

经典懒汉模式(线程不安全)线程安全的懒汉模式内部静态变量实现懒汉模式特点与选择




作者: 摩西摩西OvO    时间: 2018-7-26 10:25

作者: 不二晨    时间: 2018-7-26 11:38
奈斯,很赞
作者: wuqiong    时间: 2018-7-26 11:41

作者: 吴琼老师    时间: 2018-7-26 16:27





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2