你能在电脑上调出两个Windows任务管理器吗?
假设能,如果两个管理器显示的数据相同,那何必要存在两个呢?
如果两个管理器显示的数据不同,那我该相信哪一个呢?
试试看,应该有且仅有一个吧?一个系统里有且仅有一个Windows任务管理器实例供外界访问 。如何保证系统里有且仅有一个实例对象呢?并且能够供外界访问?你可以在系统里定义一个统一的全局变量,但这并不能防止创建多个对象(想一想,为什么?)这就是单例模式的典型应用。
对于一个软件系统中的某些类来说,只有一个实例很重要。假设Windows系统上可以同时调出两个Windows任务管理器,这两个任务管理器显示的都是同样的信息,那势必造成内存资源的浪费;如果这两个任务管理器显示的是不同的信息,这也给用户带来了困惑,到底哪一个才是真实的状态?
1.单例模式简介
单例模式定义:
单例模式:
确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。
单例模式有3个要点:
- 这个类只能有一个实例;
- 它必须自己创建这个实例;
- 它必须自己向整个系统提供这个实例。
2.单例模式结构
单例模式结构非常简单,其UML图如下所示,只包含一个类,即单例类。为防止创建多个对象,其构造函数必须是私有的(外界不