2007-07-05
(2)创建模式之单态模式 singleton
关键字: 模式, pattern
Q女士是在太喜欢干净了,每天都打扫3遍卫生,家里弄得是一尘不染。
这天,Y先生在家休息,和Q女士一起打扫卫生。
干了一会,Y先生突然发现了一个问题,就是家里的抹布突然多了起来。Y先生观察了一会,终于发现哪出问题了。
原来Y先生和Q女士一起干活,当Q女士用抹布的时候,Y先生想用的时候,就拿出来一个新的。最糟糕的是,有的时候
两个人都忘了把抹布放到了什么地方,只好再拿新的。
Y先生:老婆等等,你不觉得咱们家现在抹布太多了吗?
Q女士:嗯,是多了一点,怎么搞得?
Y先生:我来想个办法吧:
java 代码
- public class Mabu {
- private static Mabu instance = new Mabu();
- public static Mabu getMabu() {
- return instance;
- }
- }
Q女士:看起来不错,可是,我仍然可以拿一个新的抹布,不是吗? Mabu mabu = new Mabu();
Y先生:嗯,我得修改一下:
java 代码
- public class Mabu {
- private static Mabu instance = new Mabu();
- private Mabu() {
- }
- public static Mabu getMabu() {
- return instance;
- }
- }
Q女士:嗯,确实,这样就不会弄得乱了,可是,如果我们不打扫卫生的时候,卫生间里为什么还要放一个抹布?
Y先生:对,我再修改一下:
java 代码
- public class Mabu {
- private static Mabu instance = null;
- private Mabu() {
- }
- public static Mabu getMabu() {
- if(instance==null) {
- instance = new Mabu();
- }
- return instance;
- }
- }
Q女士:这个方案确实不错,可是如果我们两个同时需要抹布,你能保证只存在一个抹布?我指得是“同时”。
Y先生:我明白你的意思了,那还得修改一下:
java 代码
- public class Mabu {
- private static Mabu instance = null;
- private Mabu() {
- }
- public static synchronized Mabu getMabu() {
- if(instance==null) {
- instance = new Mabu();
- }
- return instance;
- }
- }
Y先生得意地一笑:这下在咱们家就只能存在一个抹布了!!!
Q女士:只能使用一个抹布???难道你想让我们半夜才打扫完卫生吗??快给我去掉这个没有用的东西!!
于是。。。。抹布再次遍布于家中。。。。
评论
yananay
2007-07-12
public static synchronized Mabu getMabu()
不可能同时拿到得
不可能同时拿到得
huangyh
2007-07-10
呵呵,到是挺有意思的,
Mabu a = getMabu();
Mabu b = getMabu();
虽然拿的是同一块,但是2个人都可以同时时用.所以说是拿抹布,好象不是很恰当,再想想,看有没有更合适的例子:)
Mabu a = getMabu();
Mabu b = getMabu();
虽然拿的是同一块,但是2个人都可以同时时用.所以说是拿抹布,好象不是很恰当,再想想,看有没有更合适的例子:)
发表评论
- 浏览: 144961 次

- 详细资料
搜索本博客
我的相册
tdd
共 3 张
共 3 张
最新评论
-
网站的静态页面生成方案
笑 喘 写道yananay 写道 把对 index.do 请求后的结果保存成一个 ...
-- by tianmo2008 -
网站的静态页面生成方案
我曾经尝试过在ASP.NET中做这样的事情,用某户访问某个页面时,先从配置里读取 ...
-- by 活靶子 -
网站的静态页面生成方案
对于CMS静态发布,我用的是用Veocity模板去 生产的,根据一定的业务逻辑去 ...
-- by pablo3518 -
聊聊大连新的残疾人制度
政府张口要钱,什么理由已经不重要了。。。
-- by issppt -
请先不要讨论细节好吗
[quote="ayis"][quote="kimmking"][quote=" ...
-- by gzstyxb






评论排行榜