インタフェースを満たすメソッド/プロパティの有無をチェックすることで、ダイナミックな型指定によるインタフェースを強制するRubyの方法について準備が整いました。メンバー照合vsインタフェース
インターフェイスを使用するよりも、この全体的なデザインの原則はどのように優れていますか?賛否両論は何ですか?たとえば、C#で同じ概念を実装することができますが、私はそれが同じ値、
public class Foo
{
public Foo(dynamic _obj)
{
MethodInfo[] methods= _obj.GetType().GetMethods();
if (!methods.Any(x => x.Name == "SomeRequiredMethod")
{
throw new ArgumentException("Object does not meet interface requirements.");
}
}
// proceed with functionality that requires the method
}
を持っているでしょうそしてもちろん、あなたが署名のような、単なる名前以上のものをチェックするために、これを拡張することができればわかりません返品タイプなど
思考?私はこのアプローチにはいくつかの主要な問題の問題見ることができます
しかし、Rubyではパフォーマンスヒットがあるかどうかは分かりますか?私は39msでそれを計時した。私はそれが間違いなく加算できると思う。 –
私はRubyについてはあまりよく分かりませんが、その動的言語なので、確かにこのようなことに適しています。あなたが与えるタイミングは、文脈なしでは非常に有益な情報ではありません...私はあなたの方法が何をしているのか、どのようにあなたのテストを行ったのか分かりません。 –