この質問は非常に一般的ですが、どのように実装するべきかわかりません。2つのクラス間で機能を共有する
私のシナリオ:
質問:DirectionTile
を実装する方法は? DirectionTile
の
行動の実装:(?)
abstract class DirectionTile
{
public Point Direction;
public Tile Next => Board.GetTile(Coords + Direction);
}
あなたはプロパティCoords
は、基底クラス、Tile
あるからだろう見ることができるように。
RailTile
とSailTile
はともにDirectionTiles
です。 (本当にこのような多型を使用したい)SailTile
はWaterTile
から継承する必要があり、これはTile
と2人の関係をケースと同じようにしかし、私はちょうど、DirectionTile
から継承することはできません。
私は誰かが私は解決できないことを、この問題で私を助けることができると思います。私の説明が十分明確であるかどうか教えてください。
考えるとC#は何の多重継承を持っていない:DirectionTileについては
今は、私はそれはあなただけのプロパティと機能を継承しWaterTileとRailTile
をインスタンス化します別のエンティティ/クラスだと思います特色 "、または次善策のオプション:拡張方法。 – CodeCaster
戦略パターンが意味をなさないかもしれません。あなたのexecute()メソッドは単に "getNextTile()"オペレーションかもしれません。 – Tim
[コンポーネントベースのゲームエンジン](http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/)を見てください。基本的には、tradidtional OOP継承を使用すると、あなたのようなアーキテクチャの問題を引き起こす可能性があることに重点を置いています。その代わりに、ゲームの各「オブジェクト」は、共通のルーツなしでコンポーネントの複数の組み合わせを可能にするコンポーネントの集約である可能性があります。 –