インタフェースとは
インタフェースはメソッドのシグネチャを定義した、メソッドをひとまとめにしたものである。
また、空のインタフェースなど使い方は色々あるが、今回は私が抱いていたインタフェースはなんのためにあるのかを書いてみたいと思う。
type <型名> interface {
メソッド
・
・
}
インタフェースの役割
golangにおいて継承という概念はないため、インタフェースを用いて抽象化を行います。また、golangではインタフェースでしか抽象化ができない。ここで、抽象化とは具体的な実装を振る舞いによって共通化することである。
例えば上の図のように機能Aが共通している場合、インタフェースを用いて機能Aを共通化する。こうすることで、機能Aを修正するときに抽象化した1箇所を修正すればよくなる。逆に機能Aを抽象化していない場合、機能Aが実装されている箇所を全て書き換える必要が出てきてしまう。
今回伝えたいこと
- golangにおけるインタフェースは抽象化を行う役割をもつ
- インタフェースを用いて抽象化することで依存を最小限にし、修正をする際に手間が省ける