怎麽設計這個框架呢
問題:
現在公司要 根據SAP中的數據 篩選 生成多種不同形式的財務報表.(如命名為SOG ,EXE等報表).
每种表篩選的方法是不同. [如 SOG 這種報表時根據 SAP中的一個字段{vkgrp}來進行篩選的.而EXE 這種財務報表時根據 Sap 中的三個字段來進行數據篩選的.]
篩選完數據后 處理數據生成報表.
然後給有報表接收權限人發送郵件.
另: 每种報表都要生成一份縂的報表 發給具有縂報表接收權限的人.
如 SOG 如果 vkgrp 有009 020 ,030 那么就要生成 4份 報表
Sog-all
Sog-009
Sog-020
Sog-030
而對于有多少种vkgrp 我是未知的.
要怎樣設計,使得它有很好的擴展性.因爲後面可能會有其他形式的報表.
以下是我設置的類
public abstract class Report
{
abstract public Email GetEmail();
abstract public ReportStruct GetReportStruct();
abstract public void GenerateExcelReport();
}
public class OstdSOGAll:Report
{
public OstdSOGAll()
{
}
public override Email GetEmail()
{
Email email = new Email();
return email;
}
public override ReportStruct GetReportStruct()
{
ReportStruct reportSt = new ReportStruct();
return reportSt;
}
public override void GenerateExcelReport()
{
Console.WriteLine("My Lover IS your!");
}
}
public class OstdSOGSpe:Report
{
private string sogkey;
public string SOGKEY
{
get
{
return sogkey;
}
set
{
sogkey = value;
}
}
public OstdSOGSpe()
{
}
public override Email GetEmail()
{
Email email = new Email();
return email;
}
public override ReportStruct GetReportStruct()
{
ReportStruct reportSt = new ReportStruct();
return reportSt;
}
public override void GenerateExcelReport()
{
Console.WriteLine("My Lover IS her!");
}
}
------解决方案--------------------用工厂模式
------解决方案--------------------
把手头的做好就可以了,当你考虑抽象的时候要有一个尺度,例如不要把4个礼拜之后才可能开始着手做的报表考虑进来。
你要精通重构技术,并且精通测试技术。那些不精通这些技术的人,希望靠一开始把什么架构都设计得很“完美”,但这在很多时候其实是痴心妄想的。那中追求完美架构(但是又拿不出非常复杂和清晰的架构设计)的做法,在csdn论坛,或者那些经验比较少的团队里,很多。精通重构技术可以培养你仅凭感觉就写出很好的架构,而不是靠理论分析。