红宝石 – 何时使用模块,何时使用类
发布时间:2020-12-16 20:06:52 所属栏目:百科 来源:网络整理
导读:我正在通过Gregory Brown Ruby Best Practices的书.早期,他正在谈论从相关类的帮助方法重构一些功能,对模块的一些方法,然后模块扩展自身. 没有看到之前,一个快速的谷歌,发现扩展自己的模块让模块上定义的方法看到对方,这是有道理的. 现在,我的问题是你什么时
我正在通过Gregory Brown
Ruby Best Practices的书.早期,他正在谈论从相关类的帮助方法重构一些功能,对模块的一些方法,然后模块扩展自身.
没有看到之前,一个快速的谷歌,发现扩展自己的模块让模块上定义的方法看到对方,这是有道理的. 现在,我的问题是你什么时候会这样做 module StyleParser extend self def process(text) ... end def style_tag?(text) ... end end 然后在测试中引用它 @parser = Prawn::Document::Text::StyleParser 而不是像这样的东西? class StyleParser def self.process(text) ... end def self.style_tag?(text) ... end end 是否可以使用它作为mixin?还是有其他原因我没看到? 解决方法
应该使用一个类来进行实例化或需要跟踪状态的功能.模块可以用作将功能混合到多个类中的方式,或者作为提供不需要被实例化或跟踪状态的一次性特征的方式.后者也可以使用类方法.
考虑到这一点,我认为这个区别在于你是否真的需要上课.当您有一个需要某些单例功能的现有类时,类方法似乎更合适.如果你所做的只包括单例方法,那么将它实现为一个模块并直接通过模块访问就更有意义了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |