简单几个例子,教你用单例模式
2014-11-10 07:34
225 查看
程序员路上如果过多的停留在基础代码上,是对于自己的一种恶心,有时候我们要学会偷懒、 还记得我在写天气APP教程的时候。使用过得一个设计模式,但是只是觉得大家应该都知道也就没做过多的总结。单例模式:简单理解:此类使用单例,全局都可调用此类官方解释:单例模式确保一个类,只有一个实例,自行提供实例并向整个系统提供这个实例、 特点 :1.一个类只能有一个实例 2.自己创建这个实例 3.整个系统都要使用这个实例拿几个例子解释吧:windows里面的 回收站 整个系统都使用这个唯一的实例,而且回收站自定提供自己的实例。再拿我写的天气APP用到的单例模式,首先weatherDB,作为一个工具类,又是查询天气的,肯定要经常用到,根据设计原则,尽量减少new 出空间,减少内存空间的消耗,所以我也使用单例模式来解决,自己实例,全局可以调用。看看 我写的这个单例模式吧public
第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。一般来说第一种比较安全再看看我在彩票APP中用到的单例模式 PS:只截取一部分代码public class TitleManager { // 显示和隐藏 private static TitleManager instance = new TitleManager(); private TitleManager() { } public static TitleManager getInstance() { return instance; }因为titleManager 在APP中要大量使用所以,将其全局化可以调用 也就是单例 我用的是饿汉单例形式调用的时候 直接 方法名.getinstance 即可 TitleManager manager = TitleManager.getInstance();博主 将在后面使用到单例模式 会继续更新这篇文章,让大家知道单例 应该啥时候用,虽然我已经说的比较应用场合了
synchronizedstatic coolWeather getinstance(Context context){if(cooWeatherDb=null){cooWeatherDb=new CollweatherDb(context);}return cooWeatherDb;}
回到正题:
单例有两种经常用:1,饿汉式单例类
public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } } |
2,懒汉式单例类 public class Singleton { private static Singleton instance =null; public static synchronizedSingleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance= new Singleton(); return instance; } } |
相关文章推荐
- 简单几个例子,教你用单例模式
- Schema的几个简单例子 入门
- 几个简单的SQL例子
- Commons-IO 的 IOUtils 的几个简单例子
- sql 存储过程 几个 简单例子
- 面试时用到的简单的工厂模式的例子
- 几个用java做的模式的例子
- C#设计模式——抽象工厂 非洲美洲食物链简单例子代码
- 单例模式简单例子(Singleton)
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- 几个简单的voip的小例子
- 几个简单的正则小例子
- 一个简单例子的设计模式分析
- 通过几个例子看sed的模式空间与保持空间
- 使用模式的一个简单例子——画图程序
- ASP.NET学习篇(3)—几个简单的ASP.ENT的例子
- 简单工厂模式和工厂模式的实现例子
- sql 存储过程 几个 简单例子,及在asp.net(C#)中调用存储过程的代码
- 几个简单的例子
- JAVA设计模式-观察者模式简单例子