本文摘自php中文网,作者零到壹度,侵删。
本文实例讲述了Java与Python中单例模式的区别。分享给大家供大家参考,具体如下:单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
一、Java中的单例模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
public class SingleCase {
private static SingleCase sc = null;
private SingleCase() {
}
public static SingleCase getSingleCase() {
if (sc == null) {
return new SingleCase();
}
return sc;
}
}
class SingleCase01 {
private static SingleCase01 sc = new SingleCase01();
private SingleCase01() {
}
public static SingleCase01 getSingleCase() {
return sc;
}
}
class SingleCase02 {
private static class innerclass{
private static SingleCase02 sc = new SingleCase02();
}
private SingleCase02() {}
public static SingleCase02 getSingleCase() {
return innerclass.sc;
}
}
|
二、Python中的单例模式
ps:由于python学过的时间有点长,一直也没时间复习,如果有错误希望广大读者指出来。
构建单例模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Test(object):
__instance = None
__firstinit = 1
def __new__(cls, *args, **kwargs):
if Test.__instance == None:
Test.__instance = object.__new__(cls, *args, **kwargs)
return Test.__instance
def __init__(self):
if not Test.__firstinit:
return
Test.__firstinit = 0
if __name__ == "__main__" :
a = Test()
b = Test()
print a
print b
|
上例中我们将类的实例保存到一个类属性 __instance 中,一旦类属性不为 None,我们就不再调用 __new__,而是直接返回 __instance。另外为避免每次调用 Test() 都会执行一遍实例初始化,我们引入了一个 __firstinit 的类属性,执行结果:
1 2 | <__main__.Test object at 0x000002507FF6E1D0>
<__main__.Test object at 0x000002507FF6E1D0>
|
值相同,即可证明为同一对象。
相关推荐:
单例模式的6种实现方式
单例模式和多例模式的总结
单例模式解析
java单例模式
以上就是Java与Python中单例模式的区别的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python爬虫有什么用
Python怎么做大数据分析
Python中有哪些基本数据类型
Python中关于日期加减法的操作详解
Python怎么逆序输出三位数
Python中property函数的用法
mac怎么安装Python
Python yield和yield from用法总结详解
为什么人工智能用Python
Python遍历输出列表中最长的单词
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Java与Python中单例模式的区别