ruby中的界面式设计模式

前端之家收集整理的这篇文章主要介绍了ruby中的界面式设计模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻求有关设计模式的帮助.
我非常习惯 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

猜你在找的Ruby相关文章