1

私のプログラムは、C# と WPFで文法を描画しようとしています。私は持っている:

1 可視化方法のツリー構造を記述する DataStructure プロジェクト。ツリー内の各ノードは、文法内の記号に関連しています。上部のノードは、その非終端記号のルールを定義します。

1 WPF でユーザー コントロールを記述する Drawer プロジェクト。

ツリーをトラバースするときにDataStructure.draw();を呼び出すため、データ構造でドロワーを参照する必要があります。各ノードで。また、ドロワー プロジェクトでデータ構造を参照する必要もあります。これにより、GUI をクリックしたユーザーに応答できるようになり、データ構造が更新されます。

これにより、循環依存が作成されます。コントローラークラスを使用しようとしましたが、わかりません:/

4

3 に答える 3

3

ここで説明されている訪問者パターンを確認する必要があります。

http://en.wikipedia.org/wiki/Visitor_pattern

これにより、データ構造プロジェクトはドロワーを含むあらゆるタイプのビジターを受け入れることができますが、実際のビジター (この場合は描画ロジック) の実装は、望ましくない方法で依存関係なく個別に生きることができます。

于 2009-12-12T16:48:43.170 に答える
2

ツリーをトラバースするときに DataStructure.draw(); を呼び出すため、データ構造でドロワーを参照する必要があります。

クイックフィックス: トラバースして呼び出すHelperObject.Draw(DataStructure);

DataStructure は、WinForms または他のプラットフォームで再利用する必要があるふりをして、自分自身を描画する方法を知っているべきではありません。HelperObject は GUI の一部である可能性があります。

于 2009-12-12T16:58:31.890 に答える
0

抽象化の第 3 層まで、オブジェクトから共通の機能を抽出します。グラマーがモデルになり、ドロワーがビューになり、コントローラーが必要なMVCを確認することもできます。

于 2009-12-12T20:05:30.403 に答える