美文网首页Android知识Android技术知识
程序员,你只能有一个媳妇儿!

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

作者: 磨砺营 | 来源:发表于2016-10-10 09:33 被阅读129次

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

【正文】

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

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

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

/**

* 饿汉式,线程安全

*

* @author 才子

*

*/

public class SingletonHungry {

private static SingletonHungry instance = new SingletonHungry();

private SingletonHungry() {

}

public static SingletonHungry getInstance() {

return instance;

}

}

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

/**

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

*

* @author 才子

*

*/

public class SingletonIdler {

private static SingletonIdler instance = null;

private SingletonIdler() {

}

public static SingletonIdler getInstance() {

if (instance == null) {

instance = new SingletonIdler();

}

return instance;

}

}

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

/**

* 懒汉式

*

* @author 才子

*

*/

public class SingletonIdler {

private static SingletonIdler instance = null;

private SingletonIdler() {

}

public synchronized static SingletonIdler getInstance() {

if (instance == null) {

instance = new SingletonIdler();

}

return instance;

}

}

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

/**

* 懒汉式

*

* @author 才子

*

*/

public class SingletonIdler {

private static SingletonIdler instance = null;

private SingletonIdler() {

}

public static SingletonIdler getInstance() {

if (instance == null) {

synchronized (SingletonIdler.class) {

if (instance == null)

instance = new SingletonIdler();

}

}

return instance;

}

}

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

private static NotificationMgr sInstance;

private NotificationMgr(PhoneApp app) {

mApp = app;

mContext = app;

mNotificationManager = (NotificationManager) app

.getSystemService(Context.NOTIFICATION_SERVICE);

mStatusBarManager = (StatusBarManager) app

.getSystemService(Context.STATUS_BAR_SERVICE);

mPowerManager = (PowerManager) app

.getSystemService(Context.POWER_SERVICE);

mPhone = app.phone; // TODO: better style to use mCM.getDefaultPhone()

// everywhere instead

mCM = app.mCM;

statusBarHelper = new StatusBarHelper();

}

static NotificationMgr init(PhoneApp app) {

synchronized (NotificationMgr.class) {

if (sInstance == null) {

sInstance = new NotificationMgr(app);

// Update the notifications that need to be touched at startup.

sInstance.updateNotificationsAtStartup();

} else {

Log.wtf(LOG_TAG, "init() called multiple times!  sInstance = "

+ sInstance);

}

return sInstance;

}

}

相关文章

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

    【威哥说】今天是10月10日了,上班第3天,大家应该已经调整好状态了吧!既然选择了前方便风雨兼程,不要有一丝的松懈...

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

    【威哥说】今天是10月10日了,上班第3天,大家应该已经调整好状态了吧!既然选择了前方便风雨兼程,不要有一丝的松懈...

  • 鬼影重重 第十九章 交谈

    “ 媳妇儿,你来啦!” “媳妇儿,你请坐。” “媳妇儿,你渴不渴?” “媳妇儿,你吃什么我...

  • 2023诗的日记(7)么?媳妇儿…

    春寒料峭, 一个的哥, 衣衫单薄, 冻的左脚挪右脚。 他在接一个电话, 只听他说道: “么?媳妇儿,媳妇儿!” “...

  • 《媳妇儿,我们去卖煎饼果子吧》魏雪明

    刚看到书名,第一个惯性思维便是:叫媳妇儿去卖煎饼果子?听起来好没前途啊!这还能有媳妇儿吗?! 但是因为封面宣传着,...

  • 媳妇儿

    媳妇儿是俺花了11只鸡腿骗来的。 媳妇儿刚认识俺的时候,想了半天后问俺:你谈过恋爱木有?俺看着那双清澈...

  • 有一种委屈叫吃力不讨好

    我的婆家有两个儿媳妇儿,我是大儿媳妇儿。这两个儿媳妇儿一个温柔,会讨老人欢心,只挑轻活儿干;一个耿直,不会说好话,...

  • 2018-10-24

    今天中国程序员节,不出意外以后这也会是我的节日吧,以后我还要缠着小媳妇儿给我过节,想想就开心,其实做程序员没什么不...

  • 我和小饼干的日常(四)

    “我媳妇儿真好看!” “我媳妇儿才好看!” “我媳妇儿比你媳妇好看!” “好好好,你媳妇儿最好看!”说完这句话,她...

  • 我是程序员

    我是一只程序员, 一只会飞的程序员。 程序员是个新生物种, 第一个程序员是位女士, 1815年诞生, 1842年觉...

网友评论

    本文标题:程序员,你只能有一个媳妇儿!

    本文链接:https://www.haomeiwen.com/subject/qmbmyttx.html