java设计模式(单例模式)

饿汉模式:

 1 package SingleTon;
 2  
 3 public class Singleton {
 4     //1.将构造方法私有化,不允许外部直接创建对象
 5     private Singleton(){
 6     }
 7     
 8     //2.创建类的唯一实例,使用private static修饰(private不允许外部访问)
 9     private static Singleton instance = new Singleton();
10     
11     //3.提供一个用于获取实例的方法
12     public static Singleton getInstance(){
13         return  instance;
14     }
15     
16 }

懒汉模式:

 1 package SingleTon;
 2 public class Singleton2 {
 3     //1.将构造方法私有化,不允许外边直接创建对象
 4     
 5     //2.创建类的唯一实例,使用private static修饰
 6     private static Singleton2 instance;
 7     
 8     //3.提供一个用于获取实例的方法,使用public static修饰
 9     public static Singleton2 getinstance(){
10         if (instance == null) {
11             instance = new Singleton2();
12         }
13         return instance;
14     }
15     
16  
17 }

测试运行:

package SingleTon;
 
/*两种模式的区别:饿汉模式的特点是加载类时比较慢,但是运行
*时获取对象的速度比较快,线程安全
* 懒汉模式特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全
 */
 
public class Test {
    public static void main(String[] args) {
 
        // 饿汉模式
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        if (s1 == s2) {
            System.out.println("s1和s2是同一个实例");
        } else {
            System.out.println("s1和s2不是同一个实例");
        }
 
        // 懒汉模式
        Singleton2 s3 = Singleton2.getinstance();
        Singleton2 s4 = Singleton2.getinstance();
        if (s3 == s4) {
            System.out.println("s3和s4是同一个实例");
        } else {
            System.out.println("s4和s4不是同一个实例");
        }
 
    }
}

 

posted @ 2021-06-08 19:28  这里那里  阅读(32)  评论(0)    收藏  举报
Live2D