相关疑难解决方法(0)

在Ruby中,C#中的接口相当于什么?

我目前正在尝试学习Ruby,并且我正在尝试更多地了解它在封装和合同方面提供的内容.

在C#中,可以使用接口定义合同.实现接口的类必须通过为每个定义的方法和属性(以及可能的其他内容)提供实现来满足合同中的条款.实现接口的单个​​类可以在合同定义的方法范围内执行任何需要,只要它接受相同类型的参数并返回相同类型的结果.

有没有办法在Ruby中强制执行此类操作?

谢谢

我在C#中的一个简单例子:

interface IConsole
{
    int MaxControllers {get;}
    void PlayGame(IGame game);
}

class Xbox360 : IConsole
{
   public int MaxControllers
   {
      get { return 4; }
   }

   public void PlayGame(IGame game)
   {
       InsertDisc(game);
       NavigateToMenuItem();
       Click();
   }
}

class NES : IConsole
{
    public int MaxControllers
    {
        get { return 2; }
    }

   public void PlayGame(IGame game)
   {
       InsertCartridge(game);
       TurnOn();
   }
}
Run Code Online (Sandbox Code Playgroud)

c# ruby interface contract equivalent

21
推荐指数
3
解决办法
6233
查看次数

在Ruby on Rails中采用"不断增长的面向对象软件"技术

我阅读了Steve Freeman和Nat Pryce 的测试指导下的面向对象的软件,并给我留下了深刻的印象.我想在使用RSpec的Rails项目中采用本书的思想,尽管它的例子是用Java编写的.

本书的基本原则是我们应该模拟接口而不是具体的类.他们说我们可以通过提取接口并命名它们来改进应用程序设计.

但是,Ruby没有任何与Java相同的语法interface.我如何利用他们的技术进行Rails项目?

UPDATE

例如,在页面126中,作者引入了Auction接口以实现该bid方法.首先,他们嘲笑Auction.class让测试通过,然后他们在Auction类中实现了一个类作为匿名内部Main类.最后,他们XMPPAuctionMain(第131-132页)中提取了一个新的具体类.

在我看来,这种增量方法是本书的关键.

如何在Ruby开发中采用或模仿这样一系列代码转换?

ruby rspec interface mocking

11
推荐指数
1
解决办法
1256
查看次数

红宝石中的界面式设计模式

我正在寻求有关设计模式的帮助.我非常习惯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
Run Code Online (Sandbox Code Playgroud)

但我真的不确定,如果这是"红宝石的方式".

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

ruby design-patterns

8
推荐指数
2
解决办法
3323
查看次数

我可以决定调用不存在的对象方法时会发生什么吗?

我的代码看起来像这样:

obj.foo(); // obj might, or might not have a `foo` method.
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以覆盖obj.foo在我的代码中调用时发生的事情,例如:

obj.foo = function(){ alert ("Hello"); });
obj.onCallNonExistentMethod = function(){ // I know this is imaginary syntax
    alert("World");
}
obj.foo(); // alerts "Hello"
delete obj.foo;
obj.foo(); // alerts "World" , would TypeError without the method missing handler.
Run Code Online (Sandbox Code Playgroud)

据我所知,在Ruby中可能是method_missingconst_missing类似的东西.

我可以覆盖在JavaScript中调用不存在的对象方法时发生的事情吗?如果可以,我该怎么办?

目标是验证我提供给用户的API,以便他们可以安全地使用API​​,我可以更清楚地警告他们错误.

javascript

3
推荐指数
1
解决办法
507
查看次数