首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

1.23类设计模式的Java版-Singleton(单例)

2012-10-18 
1.23种设计模式的Java版--Singleton(单例)????? 所谓的单例模式是指单个实例,单即单个的意思,例乃实例的意

1.23种设计模式的Java版--Singleton(单例)

????? 所谓的单例模式是指单个实例,单即单个的意思,例乃实例的意思,就是一个类生成的对象。因此,单例模式的功能作用就是保证一个类只生成一个对象,是在代码级的实现,不是人工维护的。

????? 单例模式的实现需要以下两个步骤:

????????? 1.单例类有一个存贮单例的私有属性

????????? 2.单例类的构造方法必须是私有的

????????? 3.单例类要有获取单例类实例的静态方法

????? 单例类示例:

package com.tao.pattern.singleton;/** * @author TaoistWar *  */public class Singleton {// 1.单例类有一个存贮单例的私有属性private static Singleton singleton = new Singleton();// 2.单例类的构造方法必须是私有的private Singleton() {}// 3.单例类要有获取单例类实例的静态方法public static Singleton getInstance() {return singleton;}}
?
package com.tao.pattern.singleton;/** *  * @author TaoistWar * */public class LazySingleton {// 1.单例类有一个存贮单例的私有属性private static LazySingleton singleton;// 2.单例类的构造方法必须是私有的private LazySingleton() {}// 3.单例类要有获取单例类实例的静态方法public synchronized static LazySingleton getInstance() {if (singleton == null) {singleton = new LazySingleton();}return singleton;}}

??? 比较:

?????? ?? 饿汉式单例:加载时生成单例,获取单例时不需要考虑多线程

????????? 懒汉式单例:调用时生成单例,获取单例时如果多线程需要加synchronized锁定方法以保证单例。

?

??? 结论:

? ? ? ? ? 因为在我们的开发中,如果使用单例模式,肯定会用到,废话!呵呵。所以,每次调用加个synchronized锁的效率没有不加高。因此,推荐第一种直接在私有属性中生成实例。

?

?

?

热点排行