3

私はボードを持っていて、ボードには動くタイルがあります。私のモデルがPOCOであるボードクラスとタイルクラスを持ち、ボードがタイルを「持っている」ことは非常に簡単です(ボードにはIList <Tile>があります)

私は UI (Unity3d の動作) を持っています。BoardBehaviour には「ボードがある」とします。しかし、ここから私の問題が始まります。タイルを「持つ」TileBehaviour UI オブジェクトもあります。これは冗長なようです。次の理由からです。

  • BoardBehaviour には、タイルを持つボードがあります。
  • BoardBehaviour には TileBehaviour (IList<TileBehaviours>) があり、各 TileBehaviour には Tile があります。

私は少し混乱しています...

モデルと実際の UI クラスを接続する方法はありますか?

4

4 に答える 4

1

関係です。基本クラスから継承する場合、派生クラスは基本クラスです。すなわち、車は乗り物です。

関係があります: クラスに何か (構成) があると言うとき、つまり車にはエンジンがあります。エンジンは車の一部です。

ここではタイルの移動はボードの一部です。したがって、ボードには「タイルがあります」。

動作 (Inherit プロパティ) を実装すると、その "is a" 関係になります。冗長性はありません。

 BoardBehaviour "has a" Board.

ボードにはボードの動作があります。

Board クラスは BoardBehaviour を実装します。Tile クラスは TileBehaviour を実装します。Tile 内の Board クラスの内部クラス (または、Tile が別のクラスとして必要な場合は、Board 内に新しい Tile オブジェクトを作成できます)。

于 2013-06-02T14:16:48.303 に答える
0

があります

ボードにはタイルがあります。BoardBehavior には TileBehaviors があります

理論上のコンストラクターは次のとおりです。

BoardBehavior(Board board, ...)
{
    this.m_tileBehavoirs = board.Tiles
        .Select(tile => new TileBehavior(tile, ...)).ToList();
}
于 2013-06-02T14:27:13.483 に答える
0

次のようなことをお勧めします。2 つのインターフェイス 1. BoardBehavior 2. TilesBehavior が必要です。クラス ボードとタイルにそれぞれ実装します。これで、ボードにタイルのリストが表示されます。この問題は、関連付けまたは構成によって解決できます。関連付けを行うことをお勧めします。つまり、Board クラスでは、TilesBehavior のみを実装するタイルのリストを参照できます。ここで私が複雑になりすぎないように願っています。私がそうであるかどうか教えてください。より明確にするために、このアプローチのコードを提示します。

于 2015-06-11T13:24:18.110 に答える