单件模式

                                        单件模式
                                                   周银辉

    单件模式用于提供一种机制或方法来使得我们可以控制类对象的创建个数,顾名思义它使得系统中某类对象的数目只有一个,当然它也可以用于实现固定数量对象的创建。

意图:
    保证一个类只有一个实例,并提供一个该实例的全局访问点

结构:

    singleton.PNG

怎么办?
    我们的目的很明确,我们不允许外界任意的调用我们的构造方法来构造类对象,而仅仅为外界提供一个唯一的对象,那么很自然地会联想到如下代码:
 1  public   class  MyClass
 2  {
 3       private  MyClass()
 4      {
 5      }
 6      
 7       public   static  GetMyClassObj()
 8      {
 9            // dot.gif
10      }
11  }
    其中为了防止外界对构造器的访问,我们将构造器的权限设置为private,我们提供一个方法(或属性)来允许外界访问特定的唯一的对象.那么将代码补充完整后为:
 1  public   class  MyClass
 2  {
 3       private   static readonly MyClass myObj  =   new  MyClass();
 4      
 5       private  MyClass()
 6      {
 7      }
 8   
 9       public   static  GetMyClassObj()
10      {
11           return  myObj;
12      }
13  }

应该注意的几点:
    1,我们不应该来序列化和反序列化用单件模式实现的对象,否则多次反序列化则可以创建多的实例,这与单件模式是相矛盾的.
    2,我们不应该克隆用单件模式实现的对象,否则多次克隆则可以创建多的实例,这与单件模式是相矛盾的.
    3,在多线程环境中使用单件模式时要小心.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值