本文实例讲述了Java与Python中单例模式的区别。分享给大家供大家参考,具体如下:
单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
一、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 = 0if __name__ == "__main__": a = Test() b = Test() print a print b
登录后复制
上例中我们将类的实例保存到一个类属性 __instance 中,一旦类属性不为 None,我们就不再调用 __new__,而是直接返回 __instance。另外为避免每次调用 Test() 都会执行一遍实例初始化,我们引入了一个 __firstinit 的类属性,执行结果:
立即学习“Java免费学习笔记(深入)”;
登录后复制
值相同,即可证明为同一对象。
相关推荐:
单例模式的6种实现方式
单例模式和多例模式的总结
单例模式解析
java单例模式
以上就是Java与Python中单例模式的区别的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2263695.html