对于单例模式的理解

  单例模式指的是一个类只会有一个实例,即是instance,java web中Servlet就是单实例多线程的,单实例运用场景很多,例如在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例,单例的好处:节省内存,不需要new出来那么多实例;配合线程同步;单例一般用于公共资源;

  举个例子:网页点击量通常设置成单例模式,一个静态全局变量用来计数,单例模式用于控制这个全局变量的访问,用同步锁住计数器来计数;

  单例模式主要有3个特点,:
1、单例类确保自己只有一个实例(构造方法私有化)

2、单例类必须自己创建自己的实例。
3、单例类必须为其他对象提供唯一的实例。
public class Singleton {
    private Singleton() {}
    private static Singleton single=null;
    //静态工厂方法
    public static Singleton getInstance() {
         if (single == null) { 
             single = new Singleton();
         } 
        return single;
    }
}

时间: 2024-08-28 17:14:48

对于单例模式的理解的相关文章

JAVA Static方法与单例模式的理解

近期用sonar測评代码质量的时候,发现一个问题,project中一些util类,曾经写的static方法都提示最好用单例的方式进行改正. 为此,我细致想了想,发现还是非常有道理的.这里谈谈我个人对static方法与单例模式的理解. 所谓单例模式,我不做过多解释,推荐java设计模式之禅这本书,好好理解一下. 这里我谈谈两种写法: 曾经一些公共的类,我不假思索,习惯依照例如以下写法去写: public class DateUtil { public final static String DAT

单例模式简单理解

单例模式 一般来说,一个类可以创建多个不同的对象,但是对于单例模式而言.这个单例类虽然也能创建"多个"对象,但是本质上来讲,这个对象其实就是一个. 单例模式的特点是:这个类只有一个对象,且这个对象是自己创建的,这个系统都要使用这个唯一的对象. 比如说,系统中的回收站,不管是哪个应用使用,都是一个回收站. 代码具体如下: public class MyDanLi { //1.私有化构造函数,在外面不能New来创建 private MyDanLi() { } //2.创建私有的静态的类的单

javascript单例模式的理解

阅读目录 理解单例模式 使用代理实现单例模式 理解惰性单例 编写通用的惰性单例 单例模式使用场景 回到顶部 理解单例模式 单例模式的含义是: 保证一个类只有一个实例,并提供一个访问它的全局访问点.实现的方法是:使用一个变量来标志当前是否已经为某个类创建过对象,如果创建了,则在下一次获取该类的实例时,直接返回之前创建的对象,否则就创建一个对象.这就确保了一个类只有一个实例对象. 比如如下代码是一个简单的单例模式代码实例: var Singleton = function(name){ this.n

单例模式(例子理解)+可变参函数

class Logger { public: /** *@brief 获取Logger实例 */ static Logger* Instance() { if (!ms_pInstance) ms_pInstance = new Logger; return ms_pInstance; } /** *@brief 销毁实例 */ static void Destory() { if (ms_pInstance) { delete ms_pInstance; ms_pInstance = null

单例模式深入理解

所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在.就像是Java Web中的application, 不用application的话,你也可以使用也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等. 1. 最简单的实现 首先,能够想到的最简单的实现是,把类的构造函数写成private的,从而保证别的类不能实例化此类,然后在类中提供一个静态的实例并能够返回给使用者.这样,使用者就可以通过这个引用使用到这个类的实例了. public class Single

静态成员函数与私有构造函数(对单例模式的理解)

问题:单例模式中,静态函数中实例化了类对象,私有构造函数得到执行.构造函数是非静态成员函数,难道静态函数中能调用非静态函数吗? class Singleton { public: static Singleton * getInstance(); private: Singleton(); ~Singleton(); static Singleton * m_sglton ;//(此处也可直接写为静态变量) }; Singleton* Singleton:: m_sglton = NULL; S

单例模式的理解

一.什么是单例模式 单例模式的作用是保证应用程序在任何时刻只存在一个单例对象,比如打印机,一旦开始打印了就不再接收其他打印任务,一直到当前任务结束,否则会出现打印出的东西里存在多个任务中的信息: 二.单例的特征 [1] 单例只能有一个实例: [2] 单例只能自己实例化唯一实例: [3]单例必须向其他对象提供这一实例: 三.常见单例的模式 [1]饿汉式:不管其他对象需不需要单例的唯一实例,我都先完成实例化,你要就拿不用就放那: 1 package com.zyy.stop; 2 3 public

个人对单例模式的理解

问题:单例模式有什么用处? 有些对象我们只需要一个,比如说线程池,对话框,缓存,网站计数器,任务管理器,打印机,显卡等设备的驱动程序对象.这些对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,比如程序的异常行为,资源使用过量或者是不一致的结果等等. 解决方法:使用单例模式: 单例模式:确保一个类只有一个实例,并提供一个全局的访问点: 单例模式分类: 饱汉式: 为什么叫饱汉式呢?因为他的实例不是在一开始就创建好的,我们可以看作他是饱的,不着急创建实例,在需要的时候才去创建: 饱汉式优点

python中对单例模式的理解

class Foo(object): instance = None def __init__(self): pass def process(self): return '1234565' @classmethod #版本1单例模式 def get_instance(cls): if Foo.instance: return Foo.instance else: Foo.instance = Foo() return Foo.instance obj1 = Foo() print(obj1.p