インターフェイスを満たすメソッド/プロパティの存在を確認することで、動的型付けを使用してインターフェイスを適用するRubyのメソッドの準備が整いました。
これは、インターフェースを使用するよりも全体的にどのように優れた設計原則ですか?長所/短所は何ですか。たとえば、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
}
もちろん、これを拡張して、署名やリターンタイプなど、名前だけでなくチェックすることもできます。
考え?