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)
}
}

python java scala 单例模式的更多相关文章

  1. R、Python、Scala和Java,到底该使用哪一种大数据编程语言?

    有一个大数据项目,你知道问题领域(problem domain),也知道使用什么基础设施,甚至可能已决定使用哪种框架来处理所有这些数据,但是有一个决定迟迟未能做出:我该选择哪种语言?(或者可能更有针对 ...

  2. python调用scala或java包

    项目中用到python操作hdfs的问题,一般都是使用python的hdfs包,然而这个包初始化起来太麻烦,需要: from pyspark impport SparkConf, SparkConte ...

  3. 基于Spark环境对比Python和Scala语言利弊

    在数据挖掘中,Python和Scala语言都是极受欢迎的,本文总结两种语言在Spark环境各自特点. 本文翻译自  https://www.dezyre.com/article/Scala-vs-Py ...

  4. Python/Java程序员面试必备常用问题解析与答案

    转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...

  5. 在IntelliJ IDEA中创建和运行java/scala/spark程序

    本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介 ...

  6. Java 设计模式 —— 单例模式

    1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...

  7. paip.判断字符是否中文与以及判读是否是汉字uapi python java php

    paip.判断字符是否中文与以及判读是否是汉字uapi python java php   ##判断中文的原理 注意: 中文与汉字CJKV 的区别..日本,韩国,新加坡,古越南等国家也用汉字,但不是中 ...

  8. paip.截取字符串byLastDot方法总结uapi python java php c# 总结

    paip.截取字符串byLastDot方法总结uapi python java php c# 总结 ========uapi   left_byLastDot   right_byLastDot 目前 ...

  9. paip.文件目录操作uAPI php python java对照

    paip.文件目录操作uAPI php python java对照 chdir -- 改变目录 chroot -- 改变根目录 dir -- directory 类 closedir -- 关闭目录句 ...

随机推荐

  1. Jquery ajax回调函数不执行

    ajax如下: $.post( "${pageContext.request.contextPath}/deptHead_assign.action", {"studen ...

  2. CS229 5.用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

  3. jQuery插件——下拉选择框

    其实,之前也写过jQuery插件,今天写的是一个模拟select选择的下拉插件. 既然是jQuery插件,那么必然是依赖jQuery的了. 老规矩,直接上代码吧! ;(function () { $. ...

  4. TestLink 的使用详解

    二.初始配置(设置用户.产品) 1. 用户设置 在TestLink系统中,每个用户都可以维护自己的私有信息.admin可以创建用户,但不能看到其它用户的密码.在用户信息中,需要设置Email地址,如果 ...

  5. QSetting 说明和简单使用

    今天看到服务端代码有一个QSetting.一开始以为是STL模板中的Set(弄到QT中改了个名字而已).仔细一看吓一跳,不是STL模板.是qt特有的一个类. 用来保存或读取一些配置信息用的.看了后,感 ...

  6. spring揭密学习笔记(1) --spring的由来

    1.spring起源于在EJB暴露出各种严重问题的情况应运而生. Spring是于2003年兴起的一个轻量级的Java开发框架, Spring倡导一切从实际出发,以实用的态度来选择适合当前开发场景的解 ...

  7. CentOS7离线安装Ambari与HDP

    安装步骤总体说明 1.安装以前需要先规划服务器,一台主机多台从机.主从需要设置时间同步和免密. 2.建立离线源,因在线安装速度很慢,所以需要建立离线源. 3.在主机上安装Ambari,进入系统后,挂接 ...

  8. File Input Features

    文件输入功能 1.该插件将将一个简单的 HTML 文件输入转换为高级文件选取器控件.将有助于对不支持 JQuery 或 Javascript 的浏览器的正常 HTML 文件输入进行回退. 2.文件输入 ...

  9. SVN提交报错(SVN的bug)

    提交的时候报错: Failed to execute WebDAV PROPPATCHsvn: Commit failed (details follow):svn: At least one pro ...

  10. CMD定时倒数

    修改if %count%==20 goto finish改变秒数 CMD: mode con: cols=80 lines=25color 4ftitle Please WaitSET /P var= ...