タグ

設計とオブジェクト指向に関するebcmのブックマーク (2)

  • 仕様(インターフェイス)と実装の詳細 (1) - 都元ダイスケ IT-PRESS

    APIの公開/非公開が意識できるようになると共に、「仕様(インターフェイス)」と「実装の詳細」を意識できるようになるとよい。 このクラスの公開APIはどれか、非公開APIはどれか このクラスの仕様(インターフェイス)はどれか、実装の詳細はどれか という2つの角度でクラスをとらえる。前者については昨日のエントリでも示した通り、可視性がpublic,protectedなものが公開APIであり、その他は非公開APIである。機械的に判断できますね。では後者についてはどう判断すればいいか? 注:下の例で「このクラスのインターフェイスは?」と聞かれると単純に「Baz」と答えるかもしれない。がここで言いたいのは「Bazを介したFooのインターフェイス」ではなく「Foo自身が純粋に外部に公開する仕様としてのインターフェイス」のこと。インターフェイスとは何か?についてはinterfaceについて気出して考

    仕様(インターフェイス)と実装の詳細 (1) - 都元ダイスケ IT-PRESS
  • 可視性と公開APIと非公開(内部)APIと - 都元ダイスケ IT-PRESS

    Javaではpublic, protected, default, privateという4種類の可視性がある。 Javaを始めてしばらくの間、この4つの使い分けがよくできていなかった。 「外から呼ぶならpublic、呼ばないならprivate」時代 当時から、なるべく可視性は下げた方が良い(オブジェクト指向は「隠す技術」である → 継承とコンポジット - 都元ダイスケ IT-PRESS参照)ということは理解していたので、「外から呼ぶならpublic、呼ばないならprivate」という指針からスタートした。 上記に加えて「継承先からしか呼ばないならprotected」時代 Template Methodパターンを覚えた頃の話。この時代が一番長かった。 そして残ったひとつ、default(package-private)の使い方が全く分からなかった時代でもある。色々使おうと頑張ってみたが、pa

    可視性と公開APIと非公開(内部)APIと - 都元ダイスケ IT-PRESS
  • 1