ソフトウェア開発メモ

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

ステレオロールタイプについての解説

書籍「オブジェクトデザイン」でいうステレオロールタイプについて自分なりの補足解説です。話半分に。

情報保持役

言うまでも有りませんね。エンティテイクラスとか当てはまると思います。

構造化役

親子関係を持つクラス。UIViewが有名ですね。 後、〜Sessionや〜Connectionみたいに一時的な関係を保持するクラスですね。

サービス提供役

本には、演算サービスと有りますが、各種バッチ処理なんかも当てはまると思います。

調整役

 iOSで例で恐縮ですが、UIViewController系クラスをキチン設計すれば、殆どが調整タスクになると思います。UIViewControllerのタスクって、画面全体の設定やモデルとビューの結び付けですね。

制御役

 制御と調整役の線引きって自分でもやもやとして難しいですが、ダウンロードのスジューリングとか行うクラスになるかと思います。後、UIViewControllerで画面そのものの遷移が絡む場合は他のクラスに指示したりします。

インターフェース役

インターフェス役には、ユーザーインタフェースと内部インタフェースと外部インタフェースの3つが有ります。それぞれタスクが全然違う様です。

ユーザーインタフェースについてはUIControllクラスが代表的ですね。イベントを登録したハンドラに転送します。

内部インタフェースについて、iOSAndroidでリスト表示を実装している方にはいうまで有りませんね。Javaでインタフェースとして提供するケースと、抽象クラスとして定義するケースがあります。前者の場合は他の役割を兼務しているかと思います。

外部インタフェースについてはとりあえず割愛。

終わりに

まあ、ざっくりと説明しましたが、今時のサッカー選手のポジションみたいに明確に分類できるケースは少なく「だいたいこんなロールだけど、ちょっと別のXXXというロールを持っているかなぐらい」という風に考えれば理解できるかな?と思います。要はロールタイプという名のとおり性格づけですね。