vlambda博客
学习文章列表

设计模式(一):单例模式

在很多情况下,某些类是不需要被重复产生对象的;


例如:需要有一个程序保存加载的数据信息,这个对象是在程序运行中一直存在的实例化对象,并且不会发生改变


分为两种类型:

  1. 懒汉式(需要考虑线程同步问题):在第一次使用的时候进行实例化对象处理

  2. 饿汉式:在加载时自动提供类的实例化

要点思想:

  • 保证操作只有唯一一个实例化对象

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

  • 构造方法私有化,类内部提供static方法获取实例化对象,不管外部如何改变操作则只有一个对象被提供

饿汉式:

/** * 饿汉式单例模式: * 在加载时自动提供类的实例化对象 * */public class SingleTon {
private static final SingleTon INSTANCE = new SingleTon(); //构造函数私有化,此类则不会被实例化 private SingleTon() { } //获取唯一实例化对象 public static SingleTon getInstance(){ return INSTANCE; }
public void print(){ System.out.println("单例模式饿汉例子"); }}
class SingleTonTest{ public static void main(String[] args) { SingleTon instance = null; instance = SingleTon.getInstance(); instance.print(); }}

懒汉式:

/** * 懒汉式: * 在第一次使用时进行实例化对象处理 * */
public class SingleTon {
private static SingleTon instance ; private SingleTon() { } public static SingleTon getInstance(){ //第一次使用,实例化对象 if (instance == null){ instance = new SingleTon(); } return instance; }
public void print(){ System.out.println("单例模式懒汉例子"); }}
class SingleTonTest{ public static void main(String[] args) { SingleTon instance = null; instance = SingleTon.getInstance(); instance.print(); }}