(2)创建模式之单态模式 singleton

 

Q女士是在太喜欢干净了,每天都打扫3遍卫生,家里弄得是一尘不染。

这天,Y先生在家休息,和Q女士一起打扫卫生。

干了一会,Y先生突然发现了一个问题,就是家里的抹布突然多了起来。Y先生观察了一会,终于发现哪出问题了。

原来Y先生和Q女士一起干活,当Q女士用抹布的时候,Y先生想用的时候,就拿出来一个新的。最糟糕的是,有的时候

两个人都忘了把抹布放到了什么地方,只好再拿新的。

Y先生:老婆等等,你不觉得咱们家现在抹布太多了吗?

Q女士:嗯,是多了一点,怎么搞得?

Y先生:我来想个办法吧:

java 代码
  1. public class Mabu {   
  2.        
  3.     private static Mabu instance = new Mabu();   
  4.        
  5.     public static Mabu getMabu() {   
  6.            
  7.         return instance;   
  8.     }   
  9.        
  10. }  

Q女士:看起来不错,可是,我仍然可以拿一个新的抹布,不是吗? Mabu mabu = new Mabu();

Y先生:嗯,我得修改一下:

java 代码
  1. public class Mabu {   
  2.        
  3.     private static Mabu instance = new Mabu();   
  4.        
  5.     private Mabu() {   
  6.            
  7.     }   
  8.        
  9.     public static Mabu getMabu() {   
  10.            
  11.         return instance;   
  12.     }   
  13.        
  14. }  

Q女士:嗯,确实,这样就不会弄得乱了,可是,如果我们不打扫卫生的时候,卫生间里为什么还要放一个抹布?

Y先生:对,我再修改一下:

java 代码
  1. public class Mabu {   
  2.        
  3.     private static Mabu instance = null;   
  4.        
  5.     private Mabu() {   
  6.            
  7.     }   
  8.        
  9.     public static Mabu getMabu() {   
  10.            
  11.         if(instance==null) {   
  12.             instance = new Mabu();   
  13.         }   
  14.            
  15.         return instance;   
  16.     }   
  17.        
  18. }  

 Q女士:这个方案确实不错,可是如果我们两个同时需要抹布,你能保证只存在一个抹布?我指得是“同时”。

Y先生:我明白你的意思了,那还得修改一下:

java 代码
  1. public class Mabu {   
  2.        
  3.     private static Mabu instance = null;   
  4.        
  5.     private Mabu() {   
  6.            
  7.     }   
  8.        
  9.     public static synchronized Mabu getMabu() {   
  10.            
  11.         if(instance==null) {   
  12.             instance = new Mabu();   
  13.         }   
  14.            
  15.         return instance;   
  16.     }   
  17.        
  18. }  

Y先生得意地一笑:这下在咱们家就只能存在一个抹布了!!!

Q女士:只能使用一个抹布???难道你想让我们半夜才打扫完卫生吗??快给我去掉这个没有用的东西!!

于是。。。。抹布再次遍布于家中。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值