class Result
{
public string Data { get; set; }
}
interface IRepository
{
Result[] Search(string data);
}
我有一个相当通用的接口,搜索“某些东西”并返回Result
。接口可以由几个类来实现,每个类都返回它们自己的Result和它们自己的唯一元数据。例如,我可以有一个DiskRepository
对于搜索数据在磁盘上:接口返回派生类型
class DiskResult : Result
{
public int FileSize { get; set; }
public DateTime LastModifiedDate { get; set; }
}
class DiskRepository : IRepository
{
public Result[] Search(string data)
{
// ...
DiskResult[] results = GetDataFromSomewhere();
return results;
}
}
的DiskResult
包含的结果是特定于DiskRespository
额外信息。如果我创建了另一个实现IRepository
的类,那么该特定实现可能有自己的一组元数据,这些元数据对于该类是唯一的。
最后,我想我的搜索控制器看起来像这样:
我可以很容易地展示在我Result
类Data
财产,但有一个很好的模式,以显示元每个课程从Result
派生?我可以有一大堆if
语句来检查这个类是否属于某种类型,但是感觉有点笨拙。有没有更好的方法去做我想要达到的目标?
这违反了SRP。演示文稿应该与域分开。 – Eranga 2012-02-27 04:04:07