是否值得为简单的返回类型创建一个接口?

时间:2011-01-21 20:34:30

标签: c# .net oop

考虑以下界面:

public interface IPlayerRepository
{
  IPlayerInfo GetPlayerInfo(int id);
}

public interface IPlayerInfo
{
  public int Id { get; set; }
  public int GamesPlayed { get; set; }
  public int GamesWon { get; set; }
}

以及相关的实施:

public class PlayerRepository : IPlayerRepository
{
  IPlayerInfo GetPlayerInfo(int id)
  {
    // read from external data store
    return new PlayerInfo();
  }
}

public class PlayerInfo : IPlayerInfo
{
  public int Id { get; set; }
  public int GamesPlayed { get; set; }
  public int GamesWon { get; set; }
}

具有单独的IPlayerInfo接口是否有任何价值,因为该类仅作为此方法返回的属性集合存在?让IPlayerRepository.GetPlayerInfo方法返回一个具体的PlayerInfo对象是不是更好?

5 个答案:

答案 0 :(得分:5)

如果您认为可以有多种PlayerInfo(如果PlayerInfo是一个类而不是结构,则可能就是这种情况),那么是。如果它可能永远不会改变,那么可能不会。

答案 1 :(得分:3)

如果您打算为单元测试创​​建模型,这可能是值得的。在这种特殊情况下,可能值得嘲笑IPlayerRepository,但可能不是IPlayerInfo

答案 2 :(得分:1)

PlayerInfo只是一个简单的数据存储结构,并没有太多的合同以接口的形式形式化。我避免为那些没有真正 DO 任何东西的类创建接口。

答案 3 :(得分:1)

这不仅仅是你是否会有一个不同类型的实体,还有它是否需要在测试过程中进行模拟。

如果您的实体永远不会执行任何业务逻辑,我个人也不会打扰。

答案 4 :(得分:1)

IMO。不要尝试为您尚未想到的类型编写代码。我发现编写有意义的代码总是更容易,并且不会过度抽象或过于复杂。当您的需求发生变化并且您有多种类型的PlayerInfo需要不同的实现时,您总是可以重构它。