美文网首页
设计模式-单例

设计模式-单例

作者: herenoone | 来源:发表于2016-03-14 23:31 被阅读0次

作为一个Java菜鸟,断断续续地学了几个月的Java,然后接触了Android开发,很多东西依旧似懂非懂,由于要学的东西实在太多,感觉自己像是盲人摸象,很多东西也不得其法,为了加深自己的理解,就把学到的一些知识点进行总结整理。

可能很多地方总结的不到位,若是有不对的地方,还烦请看到该篇文章的不吝赐教。。

第一篇就整理一下单例设计模式相关知识点。

单例模式作用:确保程序中一个类最多只有一个实例,提供访问这个实例的全局点,如果将一个对象赋值给全局变量,那么在程序一开始的时候就创建好对象,比较耗资源,单例设计模式就能够在需要的时候才创建。

结构大体包括
1.一个私有的静态类型引用,因为静态可以保证只有一个变量引用
2.一个私有化的构造方法,保证外部无法创建类实例
3.一个静态方法用来获取对象。

Paste_Image.png
懒汉模式在多线程中可能会出现一些问题 Paste_Image.png
解决办法:
把getInstance()方法变成synchronized同步方法,进入该方法之前要等别的线程离开次方法。 Paste_Image.png

但只有第一次执行此方法时,才需要同步,换句话说一旦设置好instance变量,就不会再需要同步这个方法了,之后每次调用都需要同步,反而造成性能下降,不能应用于频繁调用getInstance()的地方

Paste_Image.png Paste_Image.png

扩展:
在Android的学习中,常常要考虑到内存泄露的问题,在单例设计模式中就有可能出现这种问题

Paste_Image.png
context的生命周期至关重要

1.如果此时传入的是Application的context,因为Application的生命周期就是整个应用的生命周期,所以没什么问题
2.如果此时传入的是Activity的context,但这个context对应的的activity退出时,由于该context的引用被 单例对象所持有,其生命周期整个应用的生命周期。所以当前activity退出时,它的内存并不会被回收,所以造成了泄露

学习资料参见:
《headfirst 设计模式》
Android 内存泄漏总结

相关文章

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • 设计模式第二篇、单例设计模式

    目录1、什么是单例设计模式2、单例设计模式的简单实现3、单例设计模式面临的两个问题及其完整实现4、单例设计模式的应...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 2、创建型设计模式-单例设计模式

    江湖传言里的设计模式-单例设计模式 简介:什么是单例设计模式和应用 备注:面试重点考查 单例设计模式:这个是最简单...

  • 设计模式之单例模式

    单例设计模式全解析 在学习设计模式时,单例设计模式应该是学习的第一个设计模式,单例设计模式也是“公认”最简单的设计...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

网友评论

      本文标题:设计模式-单例

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