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)
}
}
python java scala 单例模式的更多相关文章
- R、Python、Scala和Java,到底该使用哪一种大数据编程语言?
有一个大数据项目,你知道问题领域(problem domain),也知道使用什么基础设施,甚至可能已决定使用哪种框架来处理所有这些数据,但是有一个决定迟迟未能做出:我该选择哪种语言?(或者可能更有针对 ...
- python调用scala或java包
项目中用到python操作hdfs的问题,一般都是使用python的hdfs包,然而这个包初始化起来太麻烦,需要: from pyspark impport SparkConf, SparkConte ...
- 基于Spark环境对比Python和Scala语言利弊
在数据挖掘中,Python和Scala语言都是极受欢迎的,本文总结两种语言在Spark环境各自特点. 本文翻译自 https://www.dezyre.com/article/Scala-vs-Py ...
- Python/Java程序员面试必备常用问题解析与答案
转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...
- 在IntelliJ IDEA中创建和运行java/scala/spark程序
本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介 ...
- Java 设计模式 —— 单例模式
1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...
- paip.判断字符是否中文与以及判读是否是汉字uapi python java php
paip.判断字符是否中文与以及判读是否是汉字uapi python java php ##判断中文的原理 注意: 中文与汉字CJKV 的区别..日本,韩国,新加坡,古越南等国家也用汉字,但不是中 ...
- paip.截取字符串byLastDot方法总结uapi python java php c# 总结
paip.截取字符串byLastDot方法总结uapi python java php c# 总结 ========uapi left_byLastDot right_byLastDot 目前 ...
- paip.文件目录操作uAPI php python java对照
paip.文件目录操作uAPI php python java对照 chdir -- 改变目录 chroot -- 改变根目录 dir -- directory 类 closedir -- 关闭目录句 ...
随机推荐
- module 'pip' has no attribute 'pep425tags'
AMD64 import pip._internal print(pip._internal.pep425tags.get_supported()) 1 2 WIN32 import pip prin ...
- Windows安装部署Tensorflow过程中的问题处理
1 在配置Tensorflow过程中有一行命令是 python object_detection/builders/model_builder_test.py 过程中出现了 NameError: na ...
- tips:Java的Random类和Random函数
tips:Java的Random类和Random函数! 随机数是一个很有趣的东西,在java中可以通过下面这2种方法得到: (1)Random类: Random类是java.util.Random这个 ...
- JavaScript基础知识:数据类型,运算符,流程控制,语法,函数。
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...
- SpringBoot项目启用本地Tomcat
1.修改pom.xml文件,配置<packaging>war</packaging>,使其发布的时候打包成war包 <groupId>com.owlforest&l ...
- linux tomcat启动后无法访问
先是按网上资料先下载安装包,然后上传到linux,启动后发现8080端口并未被占用.查了很多资料,不知道神马原因了.最后用yum安装后就可以访问了. 教程如下: 本教程介绍在CentOS 7服务器上使 ...
- python-模块的导入import
#-*- coding:utf-8 -*- #本次学习:模块的导入 ''' 1.模块名不能与第三方库或者本地库名字重名/冲突 2.导入模块时,寻找顺序:现在当前目录找,再去我们环境变量配置的pytho ...
- vuejs实现瀑布流布局(二)
瀑布流布局已然完成,那么剩下的就是另一个比较大的工程了——无限加载. 之前说了,这个活动项目是基于SUI-Mobile搭建的,所以可以直接使用sui内建组件“无限加载”来实现这个功能. 没有真实的数据 ...
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
- PyQt5 qt desinger
https://jaist.dl.sourceforge.net/project/eric-ide/eric6/stable/18.08/eric6-18.08.zip pip --timeout 3 ...