OCP

参考情報リンク

http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/dp-ocp-2.html 先日の列車事故で亡くなられた石井勝さんによる、OCPとデザインパターンについてのわかりやすい解説です。亡くなられたことが、返す返すも残念。http://www.objectmentor.co…

6. 最小知識原則 (Principle of Least Knowledge:PLK) aka デルメルの法則 (the Low of Demeter)

クラスCの操作Oは、以下のオブジェクトの操作だけを呼び出すべきである。 それはクラスC、操作Oの引数、操作Oが生成したオブジェクト、クラスCのインスタンスオブジェクトである。 オブジェクトのはしご(別のオブジェクトのメソッド呼び出しで得られたオブ…

5. コンポジット再利用原則 (Composite Reuse Principle:CRP)

継承よりもオブジェクトの多相なコンポジションの方がよい。 再利用するには、継承を使うより委譲したほうがいいですよ。(だんだん説明が適当になってきた)

4. インターフェイス分離原則 (Interface Segregation Principle:ISP)

単独の汎用的なインターフェイスよりも、多くの特化したインターフェイスの方がよい。 関連する機能一式をすべてメソッドとして備えたインターフェイスを定義すると、クライアントが使わないメソッドに依存することになる。凝集度を保ったままインターフェイ…

3. 依存関係反転原則 (Dependency Inversion Principle:DIP)

DIPは、OCPに準拠する方法を教える。 抽象に依存する。具象に依存してはいけない。 具象クラスでなく、親クラスやインターフェイスを通してオブジェクトを参照しなさい、ということ。 オブジェクトを生成するときが厄介。 HogeAbstract = new HogeConclete()…

2. Liskovの置換原則 (Liskov Sustitution Principle:LSP)

OCPの拡張。LSPを侵害するとOCPも侵害することになるが、逆はかならずしも真ならず。 サブクラスは基底クラスと置換可能でなければならない。 サブクラスは基底クラスのした約束をすべて守らなければならない、ということ。 Design by Contract の事前条件・…

1. 閉鎖/開放原則 (Open Closed Principle:OCP)

クラス間の関係についてのもっとも重要な原則。他の原則は、すべてOCPから導かれる。 クラスは拡張には開放され、修正には閉鎖されているべきである。 既存のソースに手を加えずに、システムに新しい機能を追加できるようにしなければならない、ということ。…

0. クラス原則

前回のJ2EE勉強会で、ひがさんから「DIの本質」として発表された中にでてきたOpen Closed Principle(OCP)。 以前から、「オブジェクト指向入門 (ASCII SOFTWARE SCIENCE Programming Paradigm)」で読んだりして言葉は知っている状態だったけど、正直どうい…