2

2 つのオブジェクトがあるとします。

Map
Table

現時点では、次のようなものがあります。

Map.MapTable(Table tab); <- Static MapTable method.

テーブルがマップ可能かどうかをチェックしてからマップしますが、null テーブルもチェックする必要があります。

これを行う方が理にかなっていますか?

Table tab = new Table();
Map mymap = tab.MapTable();

そうすれば、テーブルはそれ自身の状態とすべてのチェックをチェックし、新しいマップを作成します。

編集:もう少し情報

1 つのマップに多くのテーブルを含めることができるため、次のようなテーブルのコレクションを取得する MapTables メソッドもあります。

Map.MapTables(ICollection<Table> tab)

これは、map コマンドを Map タイプのままにしておく必要があることを意味しますか。

どう思いますか?

4

4 に答える 4

1

どちらの場合も、作業を完全に委任しているため、「テーブルがこれであればこれを行う」という種類のロジックを実行するのではなく、どちらも「教えて、尋ねるな」のカテゴリに分類されると思います。

問題のドメインについて知らなければ、それ以上のことを言うのは困難です。あるデータ構造を別のタイプの構造に変えることは、フリー関数が現実的に行うようなことのように感じられ、Map への依存関係を Table クラスに追加することを防ぎます。これは良いことです。

于 2009-08-08T08:47:35.687 に答える
1

Tableがについて知ることは理にかなっていますかMap、それともその逆ですか?

  • Tables が s について知っている場合MapTable.AsMap()またはTable.ToMap()インスタンス メソッド (教えてはいけない解決策) は理にかなっています。(1 つ目はライブ ビューで、2 つ目は静的コピーになると思います。)

  • Maps が s について知っている場合TableMap.FromTable(Table)静的メソッド (元のソリューション) は理にかなっています。

どちらの方法でも機能する可能性があり、おそらく両方の方法が機能する可能性があります-コードの残りの部分に依存します。依存関係は自然にどちらに向かうように見えますか?

どちらか一方が他方を知ることが意味をなさない場合、TDA ソリューションは少し微妙になる可能性がTable.Populate(SomethingPopulatable)あります。TableMapperSomethingPopulatableMap.BuildFrom(SomethingPopulatable)

しかし、その道をたどると、少し建築宇宙飛行士になるリスクがあります。

于 2009-08-06T13:50:21.737 に答える
0

テーブルクラスに関連するすべてのテーブルのロジックを維持することに投票します(あなたが提案した2番目のソリューション)

または、このようなものでも...

Table tab = new Table();
Map mymap = tab.CanMap ? new Map(tab) : null;

このように、Table.CanMap プロパティには、マッピングが可能かどうかを判断するためのすべてのロジックが含まれています。

于 2009-07-02T04:08:16.697 に答える
0

あなたの環境では、マップを作成することをテーブルが行うことと考えるのは自然ですか? テーブルのマッピングには、多くのテーブルのメンバーが関係していますか? マップの作成に関連するテーブルに固有ではない多くのビジネス ルールはありますか?

答えはドメインによって異なります。これらは、決定を下す際に私が尋ねる質問の一部です。

于 2009-07-02T04:08:58.333 に答える