设计模式之单例模式(懒汉式、饿汉式、双重检查)

转自:http://blog.csdn.net/hehe9737/article/details/7616224

[java]  view plain copy
  1. package Singleton;  
  2.   
  3. public class Persion1 {  
  4.     public static Persion1 persion=new Persion1();  
  5.     /** 
  6.      * 饿汉式单例 
  7.      */  
  8.     public static Persion1 getInstance()  
  9.     {  
  10.         return persion;  
  11.     }  
  12.     private int age;  
  13.       
  14.     public int getAge() {  
  15.         return age;  
  16.     }  
  17.     public void setAge(int age) {  
  18.         this.age = age;  
  19.     }  
  20.       
  21. }  

[java]  view plain copy
  1. package Singleton;  
  2.   
  3. public class Persion2 {  
  4.     public static Persion2 persion;  
  5.     /** 
  6.      * 懒汉式单例 
  7.      */  
  8.     public synchronized static Persion2 getInstance()  
  9.     {  
  10.         if(persion==null)  
  11.         {  
  12.             persion=new Persion2();  
  13.         }  
  14.         return persion;  
  15.     }  
  16.     private int age;  
  17.       
  18.     public int getAge() {  
  19.         return age;  
  20.     }  
  21.     public void setAge(int age) {  
  22.         this.age = age;  
  23.     }  
  24.       
  25. }  


[java]  view plain copy
  1. package Singleton;  
  2.   
  3. public class Persion3 {  
  4.     public static Persion3 persion;  
  5.     /** 
  6.      * 双重检查单例 
  7.      */  
  8.     public static Persion3 getInstance()  
  9.     {  
  10.         if(persion==null)  
  11.         {  
  12.             synchronized (Persion3.class) {  
  13.                 if(persion==null)  
  14.                 {  
  15.                     persion=new Persion3();  
  16.                 }  
  17.             }  
  18.         }  
  19.         return persion;  
  20.     }  
  21.     private int age;  
  22.       
  23.     public int getAge() {  
  24.         return age;  
  25.     }  
  26.     public void setAge(int age) {  
  27.         this.age = age;  
  28.     }  
  29.       
  30. }  

[java]  view plain copy
  1. package Singleton;  
  2.   
  3.   
  4.   
  5. public class SingletonT {  
  6.   
  7.     /**测试方法 
  8.      * @param args 
  9.      */  
  10.     public static void main(String[] args) {  
  11. //      饿汉式单例  
  12.         Persion1 p1=Persion1.getInstance();  
  13.         Persion1 p2=Persion1.getInstance();  
  14.         p1.setAge(12);  
  15.         p2.setAge(14);  
  16.         System.out.println("p1 :"+p1.getAge()+",p2 :"+p2.getAge());  
  17. //      懒汉式单例类  
  18.         Persion2 p3=Persion2.getInstance();  
  19.         Persion2 p4=Persion2.getInstance();  
  20.         p3.setAge(15);  
  21.         p4.setAge(17);  
  22.         System.out.println("p3 :"+p3.getAge()+",p4 :"+p4.getAge());  
  23. //      双重检查单例  
  24.         Persion3 p5=Persion3.getInstance();  
  25.         Persion3 p6=Persion3.getInstance();  
  26.         p5.setAge(18);  
  27.         p6.setAge(20);  
  28.         System.out.println("p5 :"+p5.getAge()+",p6 :"+p6.getAge());  
  29.           
  30.     }  
  31.   
  32. }  

运行结果:

p1 :14,p2 :14
p3 :17,p4 :17
p5 :20,p6 :20


你可能感兴趣的:(设计模式之单例模式(懒汉式、饿汉式、双重检查))