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 -- 关闭目录句 ...
随机推荐
- CLion使用OpenCV(Ubuntu 18.04)
项目结构: 设置CMainLists.txt文件中的内容: cmake_minimum_required(VERSION 3.13) project(cv_test) ) find_package(O ...
- mono_image_open_from_data_with_name原型
mono4.5 https://github.com/Unity-Technologies/mono 查看mono源码: //PATH: /mono/metadata/image.c MonoImag ...
- python-day02-购物车
购物车 需求: 1.启动程序后,让用户输入工资,然后打印商品列表: 2.容许用户根据商品编号购买商品: 3.用户选择商品后,检测余额是否足够,够了就直接扣款,不够就提醒客户: 4.随时可以退出,退出时 ...
- python函数的return
return语句用于退出函数,向调用方返回一个表达式.return在不带参数的情况下(或者没有写return语句),默认返回None.None是一个特殊的值,它的数据类型是NoneType.NoneT ...
- django 之admin使用
Admin注册 内容发布的部分由网站的管理员负责查看.添加.修改.删除数据,开发这些重复的功能是一件单调乏味.缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块. 1)准备工作 ...
- spring揭密学习笔记(3)-spring ioc容器:Spring的IoC容器之BeanFactory
1. Spring的IoC容器和IoC Service Provider的关系 Spring的IoC容器和IoC Service Provider所提供的服务之间存在一定的交集,二者的关系如图4-1所 ...
- hadoop启动问题分析
hadoop的安装和启动很简单直接解压进行安装 配置文件就好了,但是启动问题就很多,总结下无非以下两点: 第一点:无论你是群起还是单起;都首要格式化 bin/hdfs namenode -form ...
- Mac技巧之苹果电脑Mac OS X系统自带的鼠标所在点颜色RGB值查看工具:数码测色计
转自http://www.mac52ipod.cn/post/show-mouse-point-rgb-color-by-apple-mac-os-x-tool.php
- 关于ioncube扩展的安装和使用
ioncube 是一个专业级的PHP加密解密工具 这里是按照此扩展的教程,安装以后就可以运行用ioncube加密的文件 引导安装说明:一.下载loader-wizard.php ioncube提供了一 ...
- 学习笔记:Highcharts
(Highcharts 167K: ECharts 354K: jqChart 240K),如果用于网络,Highchart最小 Highcharts 功能强大.开源.美观.图表丰富.兼容绝大多数浏 ...