ソフトウェア開発メモ

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

制御スタイル

はじめに

書籍「オブジェクトデザイン」の制御スタイルについて読んだ結果をまとめました。こうして書いてようやく理解できた感じ。この本は他のそれと違って読んだだけでは頭に入りにくい。

集中制御型

  • 該当するステレオロールタイプは制御役

  • 状態変数の多くはは制御役が管理するかな?随時制御される役に問い合わせたりするかも。

  • 制御されるオブジェクトは制御する側から指示された事をやる。

  • 制御する方のオブジェクトの仕事は   自身が受信したイベントを元に、制御されるオブジェクトへ指示をする。

例:

産業用ロボットのスケジューラ部分とかかな?

委譲型

  • 該当するステレオロールタイプは調整役

  • 状態変数の多くは制御される各オブジェクトが管理する。

  • 制御する方のオブジェクトの仕事は、

    • 他のオブジェクトの間を取り持つ、準備を行なう。オブジェクト同士をバインドさせる等。
    • 自身が受信したイベントを元に、随時方針を伝える。

例:

 UIViewController、Fragment等のUIコントローラオブジェクト

分散型

  • 該当するロールタイプはなし

  • 各々が勝手に動く。ゲームのキャラとかそうですね。各々が思考ルーチンを持っている。

  • 後、分散型ネットワーク、シミュレーション系アプリとかもそう?

例:

 SKSpriteをサブクラス化したゲームキャラ。

まとめ

こうしてみると、世の中の典型的な指揮系統を端的に表した感じかな。

  • 制御型は自由を認めない上司が、指示待ち部下に一つ一つ指示して何かやらせる感じ。あと、ワンマン経営の社長と社員の関係とか。

  • 委譲型は普通の仕事のように各人が責任と自律しつつ、管理職が適時方針を伝えたり、部下が適時報連相する感じ。まあ、理解のある上司の下で働ける理想的な環境ですね。オブジェクト指向、責務駆動設計的にもまずこれのスタイルを検討するのが再利用性の観点から良いそうです。

  • 分散型は各々が好き勝手に動くマッドマックスwな世界という感じかな。各々営業マンが独断で営業する形態の会社とか。