单例模式之懒汉式

??

//单例模式之懒汉式
class Singleton{
 private static Singleton instance = null;

 private Singleton(){
 }

 public static Singleton getSingleton(){
  if(instance == null){
   //同步代码块,保证安全性
   synchronized(Singleton.class){
    if(instance == null){
     instance = new Singleton();
    }
   }
  }

  return instance;
 }
}

public class TestSingleton {

 /**
  * @Title: main
  * @Description:
  * @param:
  * @return void
  * @user: wangzg
  * @Date:2014-10-27
  * @throws
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Singleton singleton1 = Singleton.getSingleton();
  Singleton singleton2 = Singleton.getSingleton();

  System.out.println(singleton1 == singleton2);

 }

}
时间: 2024-10-14 16:10:18

单例模式之懒汉式的相关文章

单例模式(饿汉式单例模式与懒汉式单例模式)

首先弄清楚什么是单例模式? 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案 单例模式的特点:(单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例) 1.该类只能有一个实例 2.该类只能自己创建这个唯一实例,且别人对该类无法创建实例 3.该类提供一个公开的方法public

单例模式之懒汉式与饿汉式

懒汉式单例 package single;?public class Monitor { //开始没有班长,用静态属性表示 private static Monitor monitor=null; //构造方法私有化,防止出现多个班长对象 private Monitor(){}; public static Monitor getmonitor(){ if(monitor==null){ monitor=new Monitor(); } return monitor; }} 首先班里没有班长,用

饿汉式单例模式和懒汉式单例模式

饿汉式单例模式 /** * 饿汉式单例模式 */ package com.you.hai.model; /** * @author YouHaiDong * */ public class Singleton { //实例化 private static Singleton instance = new Singleton(); /** * 无参构造函数私有化 */ private Singleton() { } /** * 通过该方法获取实例对象 * @return */ public sta

单例模式中懒汉式和恶汉式

1.单例模式:一.懒汉式://懒汉式单例类.延迟加载,在第一次调用的时候实例化自己public class SingleTon{ private static SingleTon instance: private SingleTon(){} public static synchronized SingleTon getInstance(){//这种方式在方法上加同步,每次调用该方法都要同步 if(instance==null){ instance = new SingleTon(); } r

单例模式的懒汉式在多线程的问题

我们都知道,单例设计模式中有两种方法,一种是饿汉式,另外一种就是懒汉式,具体如下: 饿汉式: package com.seven.exercise.testEception; /** * 单例模式,饿汉式 * @author Seven * */ public class SingleDemoHunger { private SingleDemoHunger() { } private static SingleDemoHunger sdh = new SingleDemoHunger(); p

单例模式(懒汉式单例、饿汉式单例、登记式单例)

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象. 注意: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3.单例类必须给所有其他对象提供这一实例. 介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点.

PHP面向对象单例模式(懒汉式)

知识点: 一.三私一公: ①.私有静态属性,又来储存生成的唯一对象 ②.私有构造函数 ③.私有克隆函数,防止克隆--clone ④.公共静态方法,用来访问静态属性储存的对象,如果没有对象,则生成此单例 二.关键词instanceof 检查此变量是否为该类的对象.子类.或是实现接口.

单例模式的两种形式(恶汉式,懒汉式)

单例模式的特点:解决了一个类在内存的唯一性,这个类的对象只有一个. 写单例模式的步骤: 1. 私有修饰构造方法 2. 在本类的成员位置, new 自己类的对象 3. 提供一个静态方法,返回本类的对象 A: 恶汉式 package demo01; /** * 单例设计模式恶汉式 * @author Administrator * */ public class SingleDesignModel1 { //私有构造方法 private SingleDesignModel1(){ } //在自己的成

Java设计模式之单例模式(恶汉式和懒汉式)

/* * 单例模式: *         饿汉式:类一加载就创建对象 *         懒汉式:用的时候,才去创建对象 * 面试题:单例模式的思想是什么?写一个代码体现(我们最好写懒汉式的单例模式给面试官,这个才是他想要的答案) *         开发使用:恶汉式(是不会出问题的单例模式) *         面试时写懒汉式(可能会出现问题的单例模式) *             A:懒汉式(延迟加载) *             B:线程安全问题 *                 a:是