程序员,你只能有一个媳妇儿

今天是10月10日了,上班第3天,大家应该已经调整好状态了吧!既然选择了前方便风雨兼程,不要有一丝的松懈。将来的你一定会感谢现在努力拼命的自己。

设计模式是前人在开发过程中总结的一些经验,我们在开发过程中根据实际的情况,套用合适的设计模式,可以使程序结构更加简单,利于程序的扩展和维护,但也不是没有使用设计模式的程序就不好,如简单的程序就不用了,有种画蛇添足的感觉。

单例模式可以说是所有模式中最简单的一种,它自始至终只能创建一个实例,可以有两种形式,分别为懒汉式和饿汉式。

饿汉式,很简单,一开始就创建了实例,实际上到底会不会被调用也不管

/**

*饿汉式,线程安全

*

*

author才子

*

*/

publicclassSingltonHungry{

  privatstaticSingltonHungryinstanc=nwSingltonHungry();

  privatSingltonHungry(){

  }

  publicstaticSingltonHungrygtInstanc(){

    rturninstanc;

  }

}

懒汉式,由于是线程不安全的,在多线程中处理会有问题,所以需要加同步

/**

*懒汉式,这是线程不安全的,如果有多个线程在执行,有可能会创建多个实例

*

*

author才子

*

*/

publicclassSingltonIdlr{

  privatstaticSingltonIdlrinstanc=null;

  privatSingltonIdlr(){

  }

  publicstaticSingltonIdlrgtInstanc(){

    if(instanc==null){

      instanc=nwSingltonIdlr();

    }

    rturninstanc;

  }

}

加了同步之后的代码,每次进来都要判断下同步锁,比较费时,还可以进行改进

/**

*懒汉式

*

*

author才子

*

*/

publicclassSingltonIdlr{

  privatstaticSingltonIdlrinstanc=null;

  privatSingltonIdlr(){

  }

  publicsynchronizdstaticSingltonIdlrgtInstanc(){

    if(instanc==null){

      instanc=nwSingltonIdlr();

    }

    rturninstanc;

  }

}

加同步代码块,只会判断一次同步,如果已经创建了实例就不会判断,减少了时间

/**

*懒汉式

*

*

author才子

*

*/

publicclassSingltonIdlr{

  privatstaticSingltonIdlrinstanc=null;

  privatSingltonIdlr(){

  }

  publicstaticSingltonIdlrgtInstanc(){

    if(instanc==null){

      synchronizd(SingltonIdlr.class){

        if(instanc==null)

          instanc=nwSingltonIdlr();

      }

    }

    rturninstanc;

  }

}

单例模式在Androidd原生应用中也有使用,如Phon中NotificationMgr.java类

privatstaticNotificationMgrsInstanc;

privatNotificationMgr(PhonAppapp){

  mApp=app;

  mContxt=app;

  mNotificationManagr=(NotificationManagr)app

      .gtSystmSrvic(Contxt.NOTIFICATION_SERVICE);

  mStatusBarManagr=(StatusBarManagr)app

      .gtSystmSrvic(Contxt.STATUS_BAR_SERVICE);

  mPowrManagr=(PowrManagr)app

      .gtSystmSrvic(Contxt.POWER_SERVICE);

  mPhon=app.phon;//TODO:bttrstyltousmCM.gtDfaultPhon()

            //vrywhrinstad

  mCM=app.mCM;

  statusBarHlpr=nwStatusBarHlpr();

}

staticNotificationMgrinit(PhonAppapp){

  synchronizd(NotificationMgr.class){

    if(sInstanc==null){

      sInstanc=nwNotificationMgr(app);

      //Updatthnotificationsthatndtobtouchdatstartup.

      sInstanc.updatNotificationsAtStartup();

    }ls{

      Log.wtf(LOG_TAG,"init()calldmultipltims!sInstanc="

          +sInstanc);

    }

    rturnsInstanc;

  }

}

温馨提醒

如果你已经厌倦了迷茫却不知所从的日子如果你是一位想改变生活的有志青年如果你想让威哥帮助你,请在







































北京比较好白癜风专科医院
白癜风初期是什么症状



转载请注明:http://www.xxcyfilter.com/gailian/1403.html