Ruby中的Singleton vs. Monostate模式
发布时间:2020-12-16 19:08:08 所属栏目:百科 来源:网络整理
导读:假设一个类需要加载一个外部库,这需要一些时间来加载,因此只应加载一次.对此的两个自然解决方案是使用单例模式或单稳态模式.在 Ruby的特定上下文中,这些解决方案中是否有任何优势? 例如: # Using a Singleton classrequire 'singleton'class Parser includ
假设一个类需要加载一个外部库,这需要一些时间来加载,因此只应加载一次.对此的两个自然解决方案是使用单例模式或单稳态模式.在
Ruby的特定上下文中,这些解决方案中是否有任何优势?
例如: # Using a Singleton class require 'singleton' class Parser include Singleton def initialize @parser = load_external_library end def parse(sentence) @parser.parse(sentence) end end # Then calling using... Parser.instance.parse(sentence) 与: # Using a Monostate class class Parser def self.parse(sentence) @@parser ||= load_external_library @@parser.parse(sentence) end end # Then calling using... Parser.parse(sentence) 由于第二种语法更清晰,在Ruby中使用Singleton有什么好处吗? 解决方法
单例模式在结构上强制执行这样一个事实,即一次只能有一个类的实例,并且开发人员明白他们正在处理单例.
monostate强制执行没有monostate结构的单例的行为. 您可能会发现仍需要实例数据的情况.因此,单稳态会更好.您可以创建实例,使用方法来影响实例数据,并仍然可以访问静态数据.使用单例,您不能拥有实例数据. 此外,如果您计划从单例中派生类,并且您希望这些类是单例,那么您更好的选择是单值.这是因为所有来自monostate的类都是monostate.默认情况下,类派生的单例类不是单例.您必须将静态方法和属性添加到每个派生类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 详解Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准
- .net – 如何在select case语句中实现Enum
- C#实现的XML操作类实例
- (Ryan的Koa系列博客)8.依赖库:koa-is-json(本文尚未完成
- $ajaxFileUpload可以带参数文件上传源码及使用
- React-Native学习笔记之:实现简单地登录页面
- ajax中关于xml的处理和状态码的含义
- ruby-on-rails – Rails AR对多态关系有效验证_uniqueness_
- [精华] 正则表达式30分钟入门教程
- brew install macvim不适用于“xcode-lite”,即xcode的命令