ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

オブジェクトの責務について

オブジェクト(クラス)の責務は以下の順番から考えると腹にうまく落ちて行く感じ。

  1. 情報(インスタンス変数、プリミティブ型やValue Object)を把握する責務。
  2. 協力者(関連オブジェクト)に仕事を指示する責務。
  3. 直接の協力者、あるいは外部のオブジェクトから報連相(Delegate、Observer、コールバック)を受けて判断する責務。
  4. 最後に自分の情報と協力者を使って、外部に対して提供するサービス(メソッド)。

会社/組織でいうと

  1. 自身の能力、知識
  2. 部下、協力企業に依頼、指示する。
  3. 自分の立場、地位に基づいた状況判断、意思決定
  4. お客はその上の上司に提供するサービス。契約やサービスを受ける条件が伴う。

という事かな?

Smalltalkの場合は1と2の区別が難しいかな。

f:id:objectiveworker:20140914174654j:plain