单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
1、构造方法私有化
2、声明一个本类对象
3、给外部提供一个静态方法获取对象实例
什么时候使用?
1、通过在工具类的设计中使用;
2、当一个类中没有属性;
3、该类作为工具类使用非常频繁。
两种方式:
一、饿汉式
1 package practice1;
2 //单例模式
3 public class Test7 {
4 public static void main(String[] args) {
5 Singleton s=Singleton.getInstance();
6 s.method();
7 }
8 }
9 class Singleton{
10 private static Singleton singleton=new Singleton();//定义时就创建对象
11 private Singleton(){//构造方法私有化
12 }
13 public static Singleton getInstance(){//给外部提供一个全局访问点,静态方法
14 return singleton;
15 }
16 public void method(){//测试方法
17 System.out.println("method");
18 }
19 }
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的。
二、懒汉式
class Singleton2{
private static Singleton2 singleton2=null;//定义时不直接创建
private Singleton2(){}//构造方法私有化
public static Singleton2 getInstance(){
if(singleton2==null){
singleton2=new Singleton2();
}
return singleton2;
}
public void method(){//测试方法
System.out.println("method");
}
}