zoukankan      html  css  js  c++  java
  • 单件模式

                                            单件模式
                                                       周银辉

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

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

    结构:

        singleton.PNG

    怎么办?
        我们的目的很明确,我们不允许外界任意的调用我们的构造方法来构造类对象,而仅仅为外界提供一个唯一的对象,那么很自然地会联想到如下代码:
     1 public class MyClass
     2 {
     3     private MyClass()
     4     {
     5     }
     6     
     7     public static GetMyClassObj()
     8     {
     9          //
    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,在多线程环境中使用单件模式时要小心.


  • 相关阅读:
    cocos2d-x编译到android平台后,增加返回键和菜单键支持
    Android 网络权限配置
    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    Andorid第三方库
    JS计算字符串长度(中文算2个)
    JSP table中除了第一行(标题)其他全清空
    [转]整理jquery开发技巧
    [转]整理jquery使用好习惯
    把对象转换成map
    Java ZIP打包
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/666707.html
Copyright © 2011-2022 走看看