对于系统中的某些类来说,有时我们只需要某一类的一个对象,只有一个实例对我们很重要。比如一个系统中存在多个
打印任务,但是只能有一个正在工作的任务,若多个任务同时工作,可能会造成冲突,产生结果不一致性等问题。那么
在系统中该如何来实现只产生这个唯一的对象呢?这就是今天小编要和大家分享的一个设计模式----单例模式,也是最近做
项目过程中用到的一种模式。
▶单例模式:
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类,它提供全局访问的方法。
▶核心作用:
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
既然一个实例对象对系统中的某些类来说很重要,那么,在我们使用某些系统的时候,有没有遇到过这样的唯一性的实
例呢?答案是肯定的。单例模式有哪些常见的应用场景呢?下面小编为您分享一些我们身边常用的、常见的单例应用场景。
▶常见应用场景:
①Windows 的Task Manager(任务管理器)就是很典型的单例模式。
②Windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。
③在项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,每次new一个对象去读取。
④网站的计数器,一般也是采用单例模式实现,否则难以同步。
⑤应用程序的日志应用,一般都可以用单例模式实现。这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
⑥数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号,否则会出现主键重复,因此该主键编号生成器必须具备唯一性,可以通过单例模式来实现。