zoukankan      html  css  js  c++  java
  • python java scala 单例模式

    Python

    
    
    class Single2(object):
        """
        同一个对象
        """
        __instance = None
        def __new__(cls, *args, **kwargs):
            if Single2.__instance is None:
                Single2.__instance = super(Single2,cls).__new__(cls,*args,**kwargs)
            return Single2.__instance
    
    
    class Single3(object):
        """
        多个不同的对象,共享相同的属性和行为
        """
        __shared_dict = {}
        def __new__(cls, *args, **kwargs):
            obj = super(Single3,cls).__new__(cls,*args,**kwargs)
            obj.__dict__ = cls.__shared_dict
            return obj
    
    
    
    
    e = Single2()
    f = Single2()
    print(id(e)==id(f))# true
    
    
    a = Single3()
    b = Single3()
    print(id(a)==id(b))#false
    
    
    print a.__dict__ #{}
    b.__dict__['b'] = 'haha'
    
    print a.__dict__ #{"b":"haha"}
    print b.__dict__ #{"b":"haha"}
    print a._Single3__shared_dict #{"b":"haha"}
    
    
    

    java

    
    class Single{
    	private static  Single instance;
    	private Single() {};
    	public static synchronized Single getInstance() {
    		if (instance == null) {
    			instance = new Single();
    		}
    		return instance;
    	}
    }
    
    
    class Single2{
    	private static Single2 instance = new  Single2();
    	private Single2() {};
    	public static  Single2 getInstance() {
    		return instance;
    	}
    }
    
    
    class Single3{
    	/**
    	 * 懒加载,只有调用 getInstance 的时候,才会加载
    	 * @author an
    	 *
    	 */
    	private static class Singletonolder{
    		private static final Single3  INSTATNCE = new Single3() {};
    	}
    	private Single3() {};
    	public static final Single3 getInstace(){
    		return Singletonolder.INSTATNCE;
    	}
    }
    

    scala

    class Single1 private() {}
    
      /**
      *  私有化 主构造器
      */
    
    object Single1{
      val instance = new Single1()
      def getInstance():Single1 = {
        instance
      }
    
    }
    
    object Single{
      /**
      * equals 检查值相等 类似与 java 的 ==
      * eq  检查内容是否相等  类似于 java 的 equals
      * == 当一方为null 时,相当与 eq 否则为 equals
      */
      def main(args:Array[String]): Unit ={
        val a = Single1.getInstance()
        val b = Single1.getInstance()
        println(a equals b)
      }
    }
    
  • 相关阅读:
    吉他谱----see you again
    web----tcp三次握手
    python shell 执行
    python jieba
    NLP gensim 相似度计算
    linux shell expect 自动交互脚本
    docker 安装镜像
    数据库 MySQL 数据导入导出
    爬虫 puppeteer
    Linux ssh相关
  • 原文地址:https://www.cnblogs.com/jijizhazha/p/7828302.html
Copyright © 2011-2022 走看看