2009-04-09 10 views
0

SRPとKISSの原理に従って、私はプロパティのみを持つオブジェクトを設計しましたが、オブジェクトを操作するメソッドが必要です。エンティティオブジェクトデータとエンティティセットオブジェクトメソッドを分離する最良の方法は何ですか?オブジェクトメソッドとオブジェクトデータの分離

は現在、私は次のオブジェクトを作成しました:

ペットEntityオブジェクト
ペットの属性名
属性年齢

ペットエンティティセットオブジェクト
一覧は

ペットエンジンオブジェクト
メソッドをオブジェクトペットエンティティセットのLoadPets
メソッドGetPetByName ofペットエンティティ
メソッドペットエンティティセットのGetPetsByAge

これはオブジェクトを設計する最良の方法ですか?

私は.NETの

感謝を開発しています。

答えて

6

Anemic Domain Model反パターンを実装しました。クラスは必要なメソッドを実装する必要がありますが、それはSRPを破ることはありませんが、IMHO SRPはとにかに定格を超えています。

4

一般的な考え方は、メソッドを操作するデータの近くにメソッドを保持することです。データと操作を組み合わせた構造は、クラスとして知られています。

真剣に、なぜデータと操作を分離するのが良い考えだと思いますか?それは何十年も前のこととは逆の方向です!

+0

erm、googleはそう思わない... http://golang.org/ –

0

パターンマッチングをサポートする関数言語を使用します。あなたがネット上にいるので、F#は明白な選択です。

これは、メッセージを変換し、メッセージを他のノードに渡すステートレスノードが主にあるメッセージ指向システムでうまく機能します。これらのシナリオでは、メッセージ内のデータの変更やメッセージの識別については気にしません。各ノードの処理を進め、さらにメッセージを送信することに気をつけます。

あなたはオブジェクト指向設計をしていません。オブジェクト指向言語は、このパラダイムをうまくサポートしていません。メッセージトランスフォーマの反応システムを作成するのではなく、

実際には、システムのdualを取る必要があります。反応系のメッセージは、オブジェクト指向システムのメソッドと引数に対応しています。おおまかに言えば、OOプログラムのオブジェクトのフィールドにある状態は、リアクティブプログラムの呼び出しスタックに保持され、OOプログラムの呼び出しスタックである状態は、リアクティブプログラムのメッセージのフィールドに保持されます。

関連する問題