java设计模式之单例模式
一、概述
1.1 简述
单例模式是java23设计模式之一,分在创建模式上。主要用来处理一些重要的类,功能上在JVM上只有这个类的一个实例。例如:一个框架的配置文件和主要的逻辑处理类。
1.2 特点
a)单例类只能有一个实例。
b)单例类必须自己创建自己的唯一实例。
c)单例类必须给所有其他对象提供这一实例
二、实例
2.1 饿汉设计模式:
在class文件加载后直接new一个空间,后面无论用不用都不会被消失。典型的空间换时间
public class Hungry { /** * @see 饿汉模式:直接在classloader的时候,就在堆上面创建实例。节约时间,但如果一直不掉用则浪费空间 */ // 默认不可修改的静态引用。在解析了类的时候,直接new private static final Hungry hungryInstence = new Hungry(); // 私有构成器、不可实例化(不能new) private Hungry() { } // static的方法、对外调用 public static Hungry getInstance() { return hungryInstence; }}
2.2 懒汉设计模式:
使用静态的方法来判定需不需要,new一个空间,如果不用static方法,则不创造空间。典型的时间换空间。
public class LazySingle { /** * @see 懒汉模式:在需要的时候才会创建、可以当作是延迟加载 */ // 唯一引用 private static LazySingle lsingle = null; // 私有构造器、防止实例化 private LazySingle() { } // 调用方法 public static LazySingle getInstance() { if (lsingle == null) { synchronized (LazySingle.class) { if (lsingle == null) { lsingle = new LazySingle(); } } } return lsingle; }}
2.3 内部类
public class InSingle { /** * @see 利用内部类 */ // 内部类也是延迟加载 static class SingleHolder { static InSingle isingle = new InSingle(); } public static InSingle getInstance() { return SingleHolder.isingle; }}