3

autocad のアドインをプログラミングしていますが、設計上の問題で行き詰まっています。デザインパターンで解決できると思います。

テーブルを描画しようとしています。テーブルには、フレームと上面/表面の 2 つの部分があります。だから私はこれらの3つのクラスを持っています:

  • Draw : このクラスは、ユーザー入力を検証して挿入ポイントを要求し、フレームとサーフェスを作成して、新しく作成されたインスタンスを autocad DB に挿入します。
  • フレーム: 長さと奥行きに基づいてフレームを計算します。
  • 表面: 長さと深さに基づいて表面を計算します。

私の問題は、ユーザーが指定した長さの値が最大値より大きい場合、2 つ以上のサーフェスを作成する必要があることです。サーフェス クラスは、どのサーフェスが最初で最後かを知る必要もあります。また、Drawクラスは、2 番目のサーフェスを配置するために最初のサーフェスが終了する場所も認識している必要があります。

私が今行ったことは、calcNumberOfSurface(int len) というメソッドを Draw クラスに入れ、このメソッド内でサーフェスの数を反復処理して、クラス Surface の新しい状態を毎回作成することです。このソリューションにも 2 つの問題があります。Surface クラスは最初か最後かわかりません。最初のサーフェスの終了位置を定義できません。これを Draw クラスに実装する必要があります。

この問題を解決するためのベスト プラクティスやデザイン パターンはありますか?

4

1 に答える 1

3

私はプレストンに同意します。ここでデザインパターンに入る前に、必要なすべてのクラスと、各クラスが持つメンバーについて最初に考える必要があると思います。あなたの例では:

  • 終了位置は Surface クラスのメンバーではありませんか?
  • List<Surface>(面のリスト)を表す別のクラスかもしれません。このクラスには、最初と最後のサーフェスが含まれます。
于 2012-12-10T06:22:19.063 に答える