我有RiskReport类型,它根据预定的公式从IReportRepository获取数据,操纵数据,并计算风险。
有人可能会说,RiskReport类型应该以确切格式获取数据,而不是执行数据操作。 RiskReport应该只关心如何根据公式计算数据,而IReportRepository应该只返回RiskReport类所需的数据。
IReportRepository和RiskReport之间应该引入一个新类吗?因为目前从IReportRepository返回的数据被操纵为所需的格式来计算风险。
class RiskReport
{
private IReportRepository reportRepository;
public RiskReport(IReportRepository reportRepository)
{
this.reportRepository = reportRepository;
}
public decimal CalculateDataBasedOnFormula()
{
var result = from d in reportRepository.GetReportRelatedData()
group d by d.Id into dgp //potentially complex grouping
select new
{
TotalPage = dgp.Sum(x=>x.Pages) //potentially complex projection
};
decimal risk= //use the result variable to calculate data based on complex formula not shown here
return risk;
}
}
interface IReportRepository
{
IEnumerable<ReportRelatedData> GetReportRelatedData();
}
public class ReportRepository: IReportRepository
{
public IEnumerable<ReportRelatedData> GetReportRelatedData()
{
//return data from underlying data source
return new BindingList<ReportRelatedData>();
}
}
public class ReportRelatedData
{
public int Id { get; set; }
public int Name { get; set; }
public int Pages { get; set; }
//... more properties here
}
任何想法,将不胜感激!
谢谢您的建议。我将报告类型更改为RiskReport类型,是否会影响您的建议? – Pingpong 2012-04-24 07:34:51