单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
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"); } }
时间: 2024-08-24 10:56:58