インターフェイス
DIと一緒に使われると嬉しいもの
クラスがインターフェイスにだけ依存するようになり、あるクラスから具象クラスへの依存をなくせる
ex.
code: Java
public interface IY
{
}
public class Y implements IY
{
}
public class X
{
private IY y;
public X(IY y)
{
this.y = y;
}
}
class Xはinterface IYにのみ依存しており、class Yには依存していない
class X, Yがともにinterfaceのみに依存するようになったことを、「依存関係の逆転」と呼ぶ
インターフェイスだけお定義してしまえば、class X, Yをそれぞれ別の担当者が実装できる
→嬉しい
依存家系の逆転ができると、単体テストでも嬉しさがある
→インターフェイスをmockすることで、外部に依存せず対象クラスのテストができる
Rubyには言語仕様としてのインターフェイスはない。。
→だからといってRubyでインターフェイスの実装ができないわけではない
→というより、インターフェースの本質は「メソッドのシグネチャのセット」だから、interfaceがなくても、それに近いことはできる