提高创建速度,每次都获取已经存在的对象因此提高创建速度
全局共享对象,由于单例在系统中只存在一个对象实例,因此任何地方使用此对象都是一个对象
避免多实例创建使用时产生的逻辑错误。
使用案例:
线程池、缓存、日志对象、打印机、显卡的驱动程序
希望能帮到你!
数据库链接用单例模式的原因:
1,单例只保留一个对象,可以减少系统资源开销。
2,提高创建速度,每次都获取已经存在的对象因此提高创建速度全局共享对象。
3,单例在系统中只存在一个对象实例,因此任何地方使用此对象都是一个对象避免多实例创建使用时产生的逻辑错误。
例模式是一种常用的软件设计模式,它的核心结构只包含一个被称为单例的特殊类。它的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式有3种实现方式:懒汉式、饿汉式和双重锁的形式。
一、 懒汉式
构造函数声明为private或者protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作有一个public的类方法实现。
二、 饿汉式
在GetInstance函数里定义一个静态的实例,可以保证拥有唯一的实例,在返回是需要返回其指针即可。
三、双重锁
在GetInstance函数里定义一个静态的实例,可以保证拥有唯一的实例,在返回是需要返回其指针即可。
单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。
单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时候这也是个不错的选择。但实际上,一个网站是并发的,并且有可能是存在大量并发 *** 作的。如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统的精力将会很多的放在维护链接上而非直接查询 *** 作上。这显然是不可取的。
如果我们能够保证系统中自始至终只有唯一一个数据库连接对象,显然我们会节省很多内存开销和cpu利用率。这就是单件模式的用途。当然单件模式不仅仅只用于这样的情况。在《设计模式:可复用面向对象软件的基础》一书中对单件模式的适用性有如下描述:
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
下面对单件模式的懒汉式与饿汉式进行简单介绍:
1、饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。
2、懒汉式:当程序第一次访问单件模式实例时才进行创建。
如何选择:如果单件模式实例在系统中经常会被用到,饿汉式是一个不错的选择。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)