2017-07-04 6 views
2

サッカーチームをサポートしているアプリケーション用のWebアプリを作成して、一致するものから統計データを収集しています。私は現在フェーズを実施中です。そして、デザインパターの種類は、このような何かのために最善となります(それが必要とされるならば)私が何を考えていると言うことができます:あなたはいくつかのプロパティが同じである見ることができるようにサッカーの試合に最適なデザインパターン

public class Shot 
{ 
    public int Id { get; set; } 
    public int PlayerId { get; set; } 
    public string Comment { get; set; } 
    public bool OnGoal { get; set; } 
    public int GameId { get; set; } 

} 

public class Card 
{ 
    public int Id { get; set; } 
    public int PlayerId { get; set; } 
    public string Comment { get; set; } 
    public bool IsRed{ get; set; } 
    public int GameId { get; set; } 
} 

。それはインターフェイス、継承(f.e.クラスアクション)で実装する必要がありますか、多分私はデザインパターン(いずれか)のいずれかを使用する必要がありますか? Entity Frameworkが後の段階で問題を回避するために最善の方法は何ですか?

+0

なぜカードにゲームIDがないのですか? –

+0

ちょうどそれを逃した。私は質問を編集しました –

答えて

2

まあ、どちらのクラスも、何らかのゲームイベント(ショットとカード)を表します。フリーキック、スローイン、置換、ペナルティ、またはコーナーキックのような他のゲームイベントがあります。これらのイベントはすべて、ID、ゲームID、プレーヤーID、タイムスタンプ、およびおそらくコメントを持つ必要があります。だから、あなたの問題は、いくつかのクラスのデータの複製です。継承で簡単に解決できます。いいえパターン必要:

public abstract class GameEvent 
{ 
    public int Id { get; set; } 
    public int GameId { get; set; } 
    public int PlayerId { get; set; } 
    public TimeSpan Time { get; set; } 
    public string Comment { get; set; } 
} 

、様々な特定のイベント

public class Shot : GameEvent 
{  
    public bool OnGoal { get; set; } 
} 

public class Card : GameEvent 
{ 
    public bool IsRed { get; set; } 
} 

また、あなたは両方の46分の時間スパン(後半の開始)を取得することができますので、追加の時間のタイムスタンプを節約について考えていないとすべき45+前半1分。

+1

ありがとうセルゲイ。私は相続について疑いましたが、確信が持てませんでした。もし私がもう一つの質問をすることができたら。 エンティティフレームワークのコードファーストアプローチを使いたいと思います。 'public int PlayerId'のようなプロパティを使うのは大丈夫ですか?' public player player'を使うべきですか? –

+2

@MateuszSzymańskiPlayer、PlayerId、またはこれらの両方のプロパティを使うのは大丈夫です。 –

+0

時間について - ビーチサッカーのアプリになりますので、追加時間のようなものはありませんので、気にしません。とにかく - ありがとう –

関連する問題