标签:
单例设计模式是我最先学习的一个设计模式,也是最熟悉的一个设计模式。
单例设计模式的要求是生成同一个对象。即在取这个类的对象的时候,怎么取都是那一个。
单例模式不变的一点就是私有化构造方法,并提供一个静态的本类对象。
单例设计模式分为两种,一种是懒汉式,一种是饿汉式。
所谓懒汉式其实就是在获取实例化对象的时候,首先判断单例类中的静态对象是否为null,如果是null,则new出来一个,如果不是null,那就返回那个对象。
//懒汉式 class Lazyer { private static Lazyer lazyer; private Lazyer() { } public static Lazyer getInstance() { if (lazyer == null) { lazyer = new Lazyer(); return lazyer; } else { return lazyer; } } } public class LazyMan { public static void main(String[] args) { Lazyer la = Lazyer.getInstance(); System.out.println(la); Lazyer la2 = Lazyer.getInstance(); System.out.println(la2); } }
而所谓饿汉式与懒汉式最关键的不同点就是饿汉式不用判断那个静态的单例类中的静态对象是否为null,而是直接在定义这个静态对象的时候就将其new出实例化对象。
//饿汉式 class Hunger{ private static Hunger hunger = new Hunger(); private Hunger(){} public static Hunger getInstance(){ return hunger; } } public class HungryMan { public static void main(String[] args) { Hunger hu = Hunger.getInstance(); Hunger hu2 = Hunger.getInstance(); System.out.println(hu); System.out.println(hu2); } }
区别:由于懒汉式多了判断是否为空这一步,所以在多线程的时候会有并发问题发生。而饿汉式没有这一步,相对来说效率较高而且不用考虑并发问题。
========================================================================
今天状态不好,本来打算每天一文来加强学习理解的,今天就写一个这个简单的东西把。
标签:
原文地址:http://my.oschina.net/lunqi/blog/478063