A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

设计模式:解决某一类问题最行之有效的方法

       java中23种设计模式

       单例设计模式:解决一个类在内存中只存在一个对象

       想要保证对象唯一

             1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象

             2,还为了让其他程序可以访问该类对象,只好定义在本类中,自定义一个对象

             3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

       这三部怎么用代码体现呢?

           1,将构造函数私有化。

            2,在类中创建一个本类对象。

            3,提供一个方法可以获取到该对象。

                 先初始化  :饿汉式 先初始化对象。
  1. public class Single {  
  2.     private Single() {  
  3.   
  4.     }  
  5.     private static Single s = new Single();  
  6.   
  7.     public static Single getInstance() {  
  8.         return s;  
  9.     }  
  10. }  
  11.   
  12. class SingleDemo {  
  13.     public static void main(String[] args) {  
  14.         Single.getInstance();  
  15.     }  
  16. }  
复制代码
  1. /*
  2. * 对象是方法被调用时,才初始化,也叫做对象的演示加载。称为懒汉式。
  3. * 称为:饿汉式
  4. * Single类金内存 ,对象还没有存在,只有调用了getInstance(),才建立对象
  5. */  
  6. public class Single {  
  7.     private Single() {  
  8.   
  9.     }  
  10.   
  11.     private static Single s = null;  
  12.   
  13.     /**
  14.      * 加同步锁 效率变低
  15.      *  
  16.      * @return
  17.      */  
  18.     public static synchronized Single getInstance() {  
  19.         /*
  20.          * if(s==null){ s=new Single(); } return s;
  21.          */  
  22.         // 双重判断,但是代码变多了,饿汉式 是最好用的,而且是没有问题的。   
  23.         // 原则,定义单例时候,使用饿汉式   
  24.         if (s == null) {  
  25.             synchronized (Single.class) {  
  26.                 if (s == null) {  
  27.                     s = new Single();  
  28.                 }  
  29.             }  
  30.         }  
  31.         return s;  
  32.     }  
  33. }  
  34.   
  35. class SingleDemo {  
  36.     public static void main(String[] args) {  
  37.         Single.getInstance();  
  38.     }  
  39. }  
复制代码

3 个回复

倒序浏览
楼主也在通宵学习么。。。
回复 使用道具 举报
5点就起来了。。。
回复 使用道具 举报
呵呵~·好久没有找到以前通宵学代码的感觉了,~·现在为了可以进黑马~·又回到以前拼搏的时候了~·就只有一个目标就是走进黑马~·让我们一起努力吧~·!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马