例として、GPS および地理 (GIS) エンティティのドメインを考えてみましょう。
意味のある地理的エンティティ (ポイント、パス、地域) を任意のプログラミング言語のクラスとしてモデル化します。これらのクラスは、これらのエンティティの概念的な「実装不要」な表現になります。
一方、これらの機能を多かれ少なかれ同じ意味で保存するファイル形式はたくさんあります。GPS ドメインで最も一般的なファイル形式は、GPX、KML、ShapeFile、WellKnownText などです。
次に、プロパティ、プロパティなどGpsFeatureCollection
を含むクラスを作成したいとします。また、 、、(およびそれぞれの ) などのクラスを実装します。Points
Paths
GpsReader
KmlReader
ShapeFileReader
Writer
質問は:
OOAD のベスト プラクティスは次のとおりです。
- クラス
GpsFeatureCollection
をインスタンス化する必要がありますか?FileFormat(Reader/Writer)
- クラスの代わりにメソッド
GpsFeatureCollection
を実装する必要がありますか?Read/WriteFromFormat
- 各ファイル形式リーダーに空の をインスタンス化し、
GpsFeatureCollection
ファイルから読み取ったデータを入力してから、入力されたオブジェクトを戻り値として渡すようにしますか? - との間の依存関係を回避するためのメディエーター クラスが
FileFormatClass
ありObjectModelClass
ますか? - 上記のどれでもない?
- 「まあ、場合による……」
私は「正しいこと」をすることに本当に興味があります。当面の計画は Python を使用することですが、おそらくこれは他の言語でも問題になるでしょう。これにより、現在、私のペットプロジェクトで「分析麻痺」が発生しています...