ソフトウェア開発メモ

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

〜Request系(要求)クラスと〜Response系(メッセージ)クラスが分かれている訳

Web系言語でネットワーク、サーバープログラミングをガンガンやっていた人は周知の事実で今更感が有るけど、自分のためにソフトウェア設計の見地からおさらいしておきます。ちなみに〜Request(系)クラスが自ら送信する責務を持っている前提で話します。持ってない場合は当然分かれる。

 〜Request系(要求)クラスが保持するメッセージは、それを作成してから送信するまで各属性が密に使われる。つまり凝集度が高い。よって一つのクラスにする。

一方、その応答として返る受信メッセージは、受信してから他のクラスに変換されたり、UIアクションとして実行されるまで密に使われる。つまり、凝集度が高いのでこれも一つのクラスにする。

じゃあ、〜Request系(要求)クラスに受信メッセージをくっ付けて、一つのクラスにした場合はどうなるかというと。Aという送信要求と、Bという送信要求が同じCというメッセージの場合、コードが重複しうまく対応できない。よって〜Request系(要求)クラスと受信メッセージは別クラスに分ける必要がある。たしか単一責務の原則ですな。

 逆に言えば、〜Request系(要求)と受信メッセージが1対1に対応しているのなら同じクラスでも構わないと思う。