gpt4 book ai didi

ruby - ruby 中类似界面的设计模式

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:50 26 4
gpt4 key购买 nike

我正在寻求有关设计模式的帮助。我非常习惯java中的接口(interface),我不知道如何在ruby中获得类似的机制。它需要的是一种具有方法的接口(interface),例如联系人。为了获得联系人,我需要调用 api,这可能是 google、linkedid 或任何网络服务。所以我想使用一个为我提供联系人方法的界面,我不想知道任何关于提供商的信息。

我的第一次尝试看起来像这样(伪代码):

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 之路”。

欢迎提供帮助、建议和建议。最好,菲尔

最佳答案

可以在这里应用策略模式

class 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

关于ruby - ruby 中类似界面的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com