ruby中的界面式设计模式
发布时间:2020-12-16 19:23:51 所属栏目:百科 来源:网络整理
导读:我正在寻求有关设计模式的帮助. 我非常习惯 java中的接口,我不知道如何在ruby中获得类似的机制. 它需要的是一种具有例如方法的接口.联系人.为了获得联系我需要打电话给api,这可能是google,linkedid或任何web服务. 所以我想使用一个界面,它提供了联系方式,我
我正在寻求有关设计模式的帮助.
我非常习惯 java中的接口,我不知道如何在ruby中获得类似的机制. 它需要的是一种具有例如方法的接口.联系人.为了获得联系我需要打电话给api,这可能是google,linkedid或任何web服务. 所以我想使用一个界面,它提供了联系方式,我不想知道任何有关提供商的信息. 我的第一次尝试看起来像这样(伪代码): Module AbstractContact def contacts #do some stuff with @data @data end end class Impl include AbstractContact def build_provider(provider) if provider == :google #get the data from google gdata= api_call @data = gdata elsif provider == :linkedin end end end c=Impl.new c.build_provider c.contacts 但我真的不确定,如果这是“ruby的方式”. 欢迎提供帮助,建议和建议. 解决方法
战略模式可以在这里应用
def Provider def contacts raise "Abstract method called" end end class Google < Provider def contacts data = # Google API call end end class LinkedIn < Provider def contacts data = # LinkedIn API call end end class Impl def initialize(provider) case provider when :google @provider = Google.new when :linkedin @provider = LinkedIn.new else raise "Unknown provider" end end def contacts @provider.contacts end end impl = Impl.new(provider) impl.contacts (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容