怎麽設計這個框架呢
問題:
現在公司要 根據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论坛,或者那些经验比较少的团队里,很多。精通重构技术可以培养你仅凭感觉就写出很好的架构,而不是靠理论分析。