メソッドのアクセス制御
いやいや、忙しくてブログ更新サボっちまったぃ。まぁ、ぼちぼち書くつもりです。
メソッドのアクセス(可視性)を制御するために、しばしばアクセス修飾子(private, publicなど)を使うのはご存知の通り。書いたコードの可視性を、全てpublicにしても、変更前と同じ動作は出来ます。しかしー、オブジェクト指向では、この手法を使って「外に見える必要がないものは公開するべきではない」という情報隠蔽(information hiding)を実践していくコトが多いです。基本中の基本ですね。
自分、今まで「アクセス修飾子のみで」情報隠蔽を行って来たのですが、最近一つ学んだので書き記しておきます。
メソッドへのアクセス制御って、インターフェイスを使っても実践できるんですね。
インターフェイスには記述されていないけど、実装クラスには存在するpublicメソッド。例えば、あるクラスライブラリで、Factoryを使ってインスタンスを得て、インターフェイスでそれを受け取るケース。インスタンス的にはpublicメソッドを持っていても、インターフェイスには持っていない。
こうすることにより、そのメソッドへのアクセスパスを隠すコトができます。いざ、ライブラリ内で使用したくなったら、実装型にキャストするなり何なりで、使う事ができるようになります。
privateメソッドは、リフレクションでほじくり出さない限り、アクセスすることは出来ませんが、こういった「ソフトな」情報隠蔽というのも、柔軟でいいかもね〜、と思ったのでした。