メソッドのアクセス制御

いやいや、忙しくてブログ更新サボっちまったぃ。まぁ、ぼちぼち書くつもりです。

メソッドのアクセス(可視性)を制御するために、しばしばアクセス修飾子(private, publicなど)を使うのはご存知の通り。書いたコードの可視性を、全てpublicにしても、変更前と同じ動作は出来ます。しかしー、オブジェクト指向では、この手法を使って「外に見える必要がないものは公開するべきではない」という情報隠蔽(information hiding)を実践していくコトが多いです。基本中の基本ですね。

自分、今まで「アクセス修飾子のみで」情報隠蔽を行って来たのですが、最近一つ学んだので書き記しておきます。

メソッドへのアクセス制御って、インターフェイスを使っても実践できるんですね。

インターフェイスには記述されていないけど、実装クラスには存在するpublicメソッド。例えば、あるクラスライブラリで、Factoryを使ってインスタンスを得て、インターフェイスでそれを受け取るケース。インスタンス的にはpublicメソッドを持っていても、インターフェイスには持っていない。

こうすることにより、そのメソッドへのアクセスパスを隠すコトができます。いざ、ライブラリ内で使用したくなったら、実装型にキャストするなり何なりで、使う事ができるようになります。

privateメソッドは、リフレクションでほじくり出さない限り、アクセスすることは出来ませんが、こういった「ソフトな」情報隠蔽というのも、柔軟でいいかもね〜、と思ったのでした。