哪种设计模式最适合足球比赛应用

时间:2017-07-04 19:55:03

标签: c# oop design-patterns

我正在为应用程序创建web api,支持足球队从比赛中收集统计数据。我现在正在实施阶段。并且让我说我在想什么(如果需要的话)类型的设计模式最适合这样的事情:

 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.class Action)实现,或者我应该使用Design模式之一(哪一个)?实体框架最好避免后期出现问题?

1 个答案:

答案 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分钟。