コード例 #1
0
        public void ExportExcelTest()
        {
            // given 匯出策略
            IExportStrategy exporter = new ExcelExporter();

            // when export
            var reportObj = new LunchReport_V3(exporter);
            var result    = reportObj.Export("午餐清單");

            // then assert
            Assert.AreEqual("午餐清單.excel", result);
        }
コード例 #2
0
        public void ExportStrategyWithFactoryTest()
        {
            var exportType = "excel";

            // 將「策略選擇(switch)」的工作交給工廠(factory)負責,如此可以比較整潔
            var exporter = ExportManageTool.GetExporter(exportType);

            // 策略模式的目標就是使核心類別(報表類別)不再關心策略是如何被選擇的
            // 把「策略的選擇」這件事從核心邏輯(取得報表資料)中抽離出來
            var reportObj = new LunchReport_V3(exporter);
            var fileName  = reportObj.Export("午餐清單");

            Assert.AreEqual("excel", _GetFileExt(fileName));
        }
コード例 #3
0
        public void GivenExportTypeTest()
        {
            var exportType = "excel";

            // 完整重構的 strategy
            // 在報表物件內部已不再包含策略的選擇(switch),變成需由外部決定後再傳入報表物件
            IExportStrategy exporter = null;

            switch (exportType)
            {
            case "pdf":
                exporter = new PDFExporter();
                break;

            case "excel":
            default:
                exporter = new ExcelExporter();
                break;
            }
            var reportObj = new LunchReport_V3(exporter);
            var result    = reportObj.Export("午餐清單");

            Assert.AreEqual(exportType, _GetFileExt(result));
        }