本文实例讲述了Java与Python中单例模式的区别。分享给大家供大家参考,具体如下:
单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
/**
* 单例模式
* 懒汉式
* 1)、构造器私有化
* 2)、声明私有的静态属性
* 3)、对外提供访问属性的静态方法,确保该对象存在
*/
public class SingleCase {
private static SingleCase sc = null;
private SingleCase() {
}
public static SingleCase getSingleCase() {
if (sc == null) {
return new SingleCase();
}
return sc;
}
}
/**
* 单利模式
* 饿汉式
* 1)、构造器私有化
* 2)、声明私有的静态属性,同时创建该对象
* 3)、对外提供访问属性的静态方法
*
*/
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;
}
}ps:由于python学过的时间有点长,一直也没时间复习,如果有错误希望广大读者指出来。
构建单例模式
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 的类属性,执行结果:
立即学习“Java免费学习笔记(深入)”;
<__main__.Test object at 0x000002507FF6E1D0> <__main__.Test object at 0x000002507FF6E1D0>
值相同,即可证明为同一对象。
相关推荐:
以上就是Java与Python中单例模式的区别的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号