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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© heheka123 中级黑马   /  2014-3-29 20:11  /  765 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  再来一遍吧,实现单态的步骤,之前是在半迷糊的状态下写的,比较符合认知单态模式的思维顺序,有些混乱。那我在进行一下总结性描述。核心步骤是先关上所有的门,再打开一扇一次性的门来实现。
   
    所谓关上所有的门是指将构造方法封装(private)以阻止外部可对类随意的实例化。
   
    打开一扇门,是指在内部对类实例化,通过一个静态方法将实例化的值返回,再通过类对静态方法的访问把实例化的值赋给一个变量,这样我们就实现了再次打开门的功能,然而在次数上没有限定,如何来判断开门的次数呢,那我们可以通过找出被初始化后发生变化的一个值入手,一旦被实例化就发生了变化,再次访问时也还保留了上次的变化,这里就需要一个很重要的知识点静态变量,我们知道当函数再次运行时静态变量会续接前次结果继续运算,我们可以把内部实例化的对象值赋给一个初始值为空的静态变量,那样我们就做出了分别,未被初始化时值是空的,初始化之后就有了对象的值,废话不多说了看代码自己体会吧。
  1.                 class Single{
  2.                         private static Single s =null;
  3.                         private Single(){}
  4.                        
  5.                         public static Single getInstance(){
  6.                                 if(s==null){
  7.                                         synchronized(Single.class){
  8.                                                 if(s==null){
  9.                                                         s = new Single();
  10.                                                 }
  11.                                         }
  12.                                 }
  13.                                 return s;
  14.                                
  15.                         }
  16.                        
  17.                 }
  18.                 //饿汉式
  19.                 class Single{
  20.                         private static final Singel s = new Single();
  21.                         private Singel(){}
  22.                         public static Single getInstance(){
  23.                                 return s;
  24.                         }
  25.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

1 个回复

倒序浏览
兄弟你标记错了。你标记的饿汉式应该是懒汉式也叫饱汉式,而没有标记的那个才叫饥汉式也叫饿汉式。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马