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 -- 关闭目录句 ...
随机推荐
- CentOS用户和用户组管理
groupadd grptest1 按照系统默认的gid创建组.根uid一样,gid也是从1000开始的. groupadd -g 1008 grptest2 创建gid=1008的用户组:g ...
- Spark Streaming实时数据分析
[kfk@bigdata-pro01 softwares]$ sudo rpm -ivh nc-.el6.x86_64.rpm Preparing... ####################### ...
- vue 要点
一: 1. 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新. 2. v-show 的元素会始终渲染并保持在 DOM 中.v-show 是简单的切换元素的 CSS 属性 display.
- Linux性能优化 第四章 性能工具:特定进程CPU
4.1进程性能统计信息 4.1.1. 内核时间VS用户时间 一个应用程序所耗时间最基本的划分是内核时间与用户时间.内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间. ...
- Linux性能及调优指南1.2之Linux内存架构
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.2节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- php引用变量
引用变量:在php中引用意味着用不同的名字访问同一个变量内容 定义方式:& 总结:$b=&$a其中$b是取到了$a的地址,随着$a的地址变化,不会重新开辟空间可以根据他们的内存占用情况 ...
- oracle 服务名 数据库名 实例名
服务名 show parameter service_name 实例名 show parameter instance 数据库名 show parameter db conn username/pas ...
- RHEL yum
一.YUM源配置 使用RHEL自带的yum时会显示 #This system is not registered to Red Hat Subscription Management. You can ...
- JAVA获取文件夹下所有的文件
package com.test; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; im ...
- 代码: html 页面小效果 (集合,待补充)
标签切换(下部内容区跟着切换): 2016-6-2 <script type="text/javascript" src="http://cdn.bootcss.c ...