2012-04-20 11 views
0

私は自分のシナリオに使用するモデルに関するいくつかの一般的なアドバイスを探しています。クラス間のオブジェクトへのアクセスを共有するための最適な開発方法

基本的に私はGIS_Fileオブジェクトをロードするプログラムを持っています。これはProjectオブジェクト内のList<GIS_File>に格納されています。通常は1つだけProjectオブジェクトがありますが、必要に応じて複数のプロジェクトを一度にロードできるようにしたいので、プログラム内に単一のList<Project>があります。

プログラムにはWindows /フォームに関連付けられた異なるクラスがあります(私はWPFを使用していますが、これには関係ありません)。Projectsのリストにアクセスする必要があります。主なものは、オブジェクトの空間的位置のトップダウンマップビューを提供し、別のグラフはデータの特定の属性を示し、別のグラフは別の属性などを示します。このようなビューが最終的に追加される可能性があります。これらのビューのそれぞれに関連するクラスはかなり大きく、数千行に及ぶ。各ビュークラスは、対応するウィンドウ内のロードダイアログを介してList<Project>にファイルを追加することができます。

私の質問は、クラス間でデータを共有するにはどのように最善の方法です。私は現在静的なデータストアを持っていますが、このテクニックはよりオブジェクト指向のデザインに有利ではないようですが、デザインを可能な限り良くしたいと思っています。

データを参照して、さまざまなビュークラスを初期化することは可能ですか?

AlternativeView = new AlternativeView(ref MyProjects); 

これがベストプラクティスでない場合は、どのような方法が最適ですか?

静的メソッドとクラスで動作しますが、今後のメンテナンスのためにできるだけ良いデザインにしたいと考えています。

アドバイスをいただければ幸いです。

答えて

1

リポジトリパターンの1つです。チェックアウトThe Repository Pattern

リポジトリは、データソース層とアプリケーションのビジネス層を仲介します。データ・ソースにデータを照会し、データ・ソースからビジネス・エンティティーにデータをマップし、ビジネス・エンティティーの変更をデータ・ソースに持続させます。

これはまた、通常、テスト目的でリポジトリを置き換えることを許可するためにdependency injectionと一緒に使用されます。

+0

いいですね、私は見ていきます。これはデータベースでの作業を意味しますか?私は以前にそれをしていない。データベースにオブジェクトを格納でき、保存する必要がある場合、または実行時にのみ存在できるかどうか – Greg

+0

いいえ、一部のストレージ(DB、ファイルなど)でよく使用されるリポジトリですが、必ずしもそうする必要はありません。サイドノート:数千のクラスのクラスは一般的には良いアイデアではありません。 –

+0

あなたの答えとアドバイスをいただきありがとうございます。乾杯。 – Greg

関連する問題