设计模式(四)---单例模式

1、简介

  作为对象的创建模式,单例模式确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类

2、单例模式有以下三个特点

  2.1、单例类只能有一个实例

  2.2、单例类必须自己创建自己的唯一实例

  2.3、单例类必须向其它对象提供这一实例

3.饿汉式单例模式

package Singleton;
/**
 * ********************************************************
* @ClassName: EagerSingleton
* @Description: 饿汉式单例模式
*
**********************************************************
 */
public class EagerSingleton {
    private static final EagerSingleton m_instance = new EagerSingleton();

    //私有构造器
    private EagerSingleton(){}

    public static EagerSingleton getInstance(){
        return m_instance;
    }
}

  可以看出,当这个类被加载时,m_instance 会被初始化。此时类的私有构造器会被调用,这样单例类的唯一实例就被创建了

  单例类的一大特点是类的构造器是私有的,从而避免了外界利用构造器直接创建出其它的实例,并且,由于构造器是私有,此类不能被继承

4、懒汉式单例模式

package Singleton;
/**
 * ********************************************************
* @ClassName: LazySingleton
* @Description: 懒汉式单例模式
*
**********************************************************
 */
public class LazySingleton {
    private static LazySingleton m_instance = null;

    //私有构造器  保证外界无法直接实例化
    private LazySingleton(){}

     public synchronized static LazySingleton getInstance(){
        if(null == m_instance){
            m_instance= new LazySingleton();
        }
         return m_instance;
    }
}

 

时间: 2024-08-01 08:13:48

设计模式(四)---单例模式的相关文章

大话设计模式(四)单例模式的优与劣

大话设计模式(四)单例模式的优与劣 前言 首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例.     简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在). 下图是单例模式的结构图. 下面就来看一种情况(这里先假

【白话设计模式四】单例模式(Singleton)

转自:https://my.oschina.net/xianggao/blog/616385 0 系列目录 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二]外观模式(Facade) [白话设计模式三]适配器模式(Adapter) [白话设计模式四]单例模式(Singleton) [白话设计模式五]工厂方法模式(Factory Method) [白话设计模式六]抽象工厂模式(Abstract Factory) [白话设计模式七]策

(九)JAVA设计模式之单例模式

JAVA设计模式之单例模式 一.单例模式的介绍 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点.     全局对象和Singleton模式有本质的区别,因为大量使用全局对象会使得程序质量降低,而且有些编程语言根本不支持全局变量.最重要的是传统的全局对象并不能阻止一个类被实例化多次. 二.单例模式的特点 单例类只能有一个实例 单例类必须自己创建自己的唯一实例. 单例类必须给所有其他对象提供这一实例.

C#设计模式(1)——单例模式

一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考.首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类) 二.单例模式的介绍 说到单例模式,大家第一反应应该就是——什么是单例模式?,从“单例”字面意思上理解为——一个类只有一个实例,所以单例模式也就是保证一个类只

最常用的设计模式(单例模式)

记得刚开始涉足程序的时候, 去笔试 ,发现有一个笔试题经常粗线,写一个单例模式的基本实现, 当时没研究设计模式也就不知为何物, 到今日  , 才发现它已成为我日常开发最常用的一种设计模式. 我写的所有设计模式的代码都会用java 呈现, 虽然第一个学习的是c++但是 最开始作为工作的是java,并且有点偏好java 单例模式 , 意思就是 整个系统仅只有此类的一个实力, 当然这只是狭义的单例,经常看到变种的单例是允许,创建指定数量的实例的 单例模式是一种创建型模式. 它是优化的一种策划, 避免重

文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述,基本分类 如下图所示: 类成员包括字段,方法,和属性 2.字段 如上图字段分为普通字段和静态字段,两者的使用有区别,但是最大的区别在于两者在内存中的保存位置有区别. 普通字段属于对象而静态字段属于类,在使用过程中谁的字段就由谁来调用. 静态字段和普通字段的定义如下: 在调用时分各自调用 #####类

Java设计模式之——单例模式

一.什么叫单例模式 JVM所管理的内存也就是堆中只存在某个类的唯一一个实例,通过把构造函数私有化,然供一个静态方法提供唯一实例.单例模式经常被分为饿汉单例模式以及懒汉单例模式.饿汉单例模式是在类初始化的时候创建自己的实例.懒汉模式是在需要实例的时候再创建实例. 二.单例模式优点与缺点 优点:内存中只存在一个实例所以减少了内存开销,针对一些创建和销毁对象时开销比较的情况单例模式可以减小系统性能开销. 缺点:多线程下并发问题. 三.单例模式在jvm垃圾回收的时候的处理 在网上看到有人提到了关于单例模

设计模式之单例模式20170711

创建型设计模式之单例模式 一.含义 在一个进程或者线程里,对于一个类只有一个实例化对象,即内存中只有一个实例化对象 二.代码说明 由于是单例模式,只有一个对象,所以该类内部都是静态常量和静态方法, 具体来说,因为只有一个对象不能创建多个对象,创建对象就没什么意义了(直接用类表示对象即一个类就是一个对象),所以类内部都是静态的,不需创建就可使用(而且由于是静态的也确保每次调用都是属于类的内存空间,即只占一份内存空间也就是一个对象的内存空间) 在用C实现过程中也是参考这种思想,直接构造一个类的对象

java设计模式之单例模式(七种方法)

单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类.我们前面学习的很多类都是单例的.比如最典型的就是Servlet类!Servlet类被设计成单例,被所有线程共享! Java Singleton模式为我们提供了这样实现的可能.使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage

设计模式(003) 单例模式[上] 单身懒汉

 设计模式(003) 单例模式[上] 单身懒汉 什么是单例模式(What)?    GOF:"保证一个类仅有一个实例,并且提供一个访问它的全局访问点". "嗯...,GOF通常一言九鼎,单例就是这样子的." -- OO先生边思考边说. YSJIAN  :"等等,我插一句,保证应用中一个类最多只有一个实例存在,并提供一个全局访问点访问它". 只见OO先生会心一笑. 为什么用单例模式(Why)? 从What中貌似一目了然了,GOF和YSJIAN说的都