单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
一、Java中的单例模式 /**
* 单例模式
* 懒汉式
* 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;
}
}
二、Python中的单例模式
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 的类属性,执行结果:
<__main__.Test object at 0x000002507FF6E1D0> <__main__.Test object at 0x000002507FF6E1D0>
值相同,即可证明为同一对象。
相关推荐:
以上就是Java与Python中单例模式的区别的详细内容,更多请关注Gxl网其它相关文章!
查看更多关于Java与Python中单例模式的区别的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did84095