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

    一般Singleton模式通常有几种形式:
    public class Singleton {
    private Singleton(){}
    //在自己内部定义自己一个实例,是不是很奇怪?
    //注意这是private 只供内部调用
    private static Singleton instance = new Singleton();
    //这里提供了一个供外部访问本class的静态方法,可以直接访问  
    public static Singleton getInstance() {
    return instance;   
    }
    }
    第二种形式:
    public class Singleton {
    private static Singleton instance = null;
    public static synchronized Singleton getInstance() {
    //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
    //使用时生成实例!
    if (instance==null)
    instance=new Singleton();
    return instance;   }
    }
    使用Singleton.getInstance()可以访问单态类。
    上面第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
    注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。关于lazy initialization的Singleton有很多涉及double-checked locking (DCL)的讨论,有兴趣者进一步研究。
    一般认为第一种形式要更加安全些。
     
    来源:http://baike.baidu.com/view/1035727.htm?fr=aladdin
  • 相关阅读:
    文件操作:fopen()
    memset函数
    窗体操作:GetWindowLong()
    窗体操作:CBrush类
    窗体操作:GetWindowLong()
    窗体操作:ShowWindow(SW_HIDE)
    文件选择对话框:CFileDialog
    信息提示框:MessageBox
    mysql的text类型长度问题
    PV是什么意思
  • 原文地址:https://www.cnblogs.com/liuswi/p/3979073.html
Copyright © 2011-2022 走看看