单实例模式
要点:
- 一个类只能有一个实例
- 必须自行创建这个实例
- 必须自行向整个系统提供这个实例
第一种:直接暴露
第二种:用静态变量的get方法获取
饿汉式
package com.stone.designmodel;
/**
* @author Final
*
*/
public class Singleton {
/**
* 饿汉式
* 直接创建对象,不管你是否需要都会创建
* @param args
*1、构造器私有化
*2、自行创建并用静态变量保存
*3、向外提供这个实例
*4、强调这是一个单实例,用final修饰
*/
public static final Singleton IN=new Singleton();
public Singleton() {
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
懒汉式
/**
*
*/
package com.stone.designmodel;
/**
* @author Final
* 懒汉式
* 延迟创建这个对象
* 1、构造器私有化
* 2、用一个静态变量保存这个唯一的实例
* 3、提供静态方法,获取这个对象
*
*/
public class Singleton1 {
static Singleton1 in;
private Singleton1() {
}
public static Singleton1 getSingleton() {
if(in==null) {
in=new Singleton1();
}
return in;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}