2008-04-10
替换掉无齿的单例模式(Singleton)
关键字: singleton
单例模式(Singleton)
鼎鼎大名的Singleton模式,就是为了在一个JVM内只有一个实例对象存在.
上面就是Singleton模式的例子,用的人过于普遍了,也被人谴责了良多,下面就寻找一个新的模式,用于替换掉无齿的Singleton模式.
就是上面的代码.
使用方法就是
我们也不需要下面这个构造函数了,下面的构造函数就是为了阻止new SingletonClass()操作,而我们的类本来就是abstract的,同样不允许new 操作.
当然,你可以对abstract的SingletonClass进行匿名实现,下面的操作是可行的,就会无法达到最终Singleton的目的.
为了阻止上面的事情发生,你也完全可以把abstract修改成final的.
不过,使用abstract是有一定益处的,你可以让它被同样是abstract的类继承,从而得到更多特性.
这样也是个不错的选择吧.
后记:从Spring的源代码中得到的方法.Spring真是一个大宝库.
鼎鼎大名的Singleton模式,就是为了在一个JVM内只有一个实例对象存在.
public class SingletonClass {
// 饿汉式单例模式
private static SingletonClass action = new SingletonClass ();
private SingletonClass () { }
public static SingletonClass getInstance() {
return action;
}
}
上面就是Singleton模式的例子,用的人过于普遍了,也被人谴责了良多,下面就寻找一个新的模式,用于替换掉无齿的Singleton模式.
public abstract class SingletonClass {
public static void method() {
// noop
}
}
就是上面的代码.
使用方法就是
SingletonClass.method();
我们也不需要下面这个构造函数了,下面的构造函数就是为了阻止new SingletonClass()操作,而我们的类本来就是abstract的,同样不允许new 操作.
private SingletonClass () {
}
当然,你可以对abstract的SingletonClass进行匿名实现,下面的操作是可行的,就会无法达到最终Singleton的目的.
SingletonClass one = new SingletonClass() { };
为了阻止上面的事情发生,你也完全可以把abstract修改成final的.
不过,使用abstract是有一定益处的,你可以让它被同样是abstract的类继承,从而得到更多特性.
public abstract class SingletonTwoClass extends SingletonClass {
public static void method() {
}
}
这样也是个不错的选择吧.
后记:从Spring的源代码中得到的方法.Spring真是一个大宝库.
发表评论
- 浏览: 6461 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
IndexCardGenerator
共 13 张
共 13 张
最近加入圈子
最新评论
-
RAP[1] RAP开发环境的安装
Eclipse RAP的客户端渲染是基于qooxdoo,一个很优秀的开源java ...
-- by Quake Wang -
惊艳!!! Swt 上的Ribbon.
dev.java.net上早有ribbon的实现了,不过是swing的:http ...
-- by diggywang -
.net终于被java同化了
支持Java
-- by love2008 -
Groovy的Eclipse插件
多谢,在这里找到插件了
-- by wdlfellow

![lggege的博客: [203] lG 槛~ 迈过去! 用户头像](http://www.javaeye.com/upload/logo/user/18674/d58959b8-54ec-376e-b9f2-5d3a36beaa2f.jpg?1206674671)




评论排行榜