zoukankan      html  css  js  c++  java
  • Design Pattern

        class BridgePattern
        {
            public static void Main()
            {
                IReport reportMonthly = new MonthlyReport();
                IReport reportYearly = new YearlyReport();
    
                ReportChart reportChart = new ColumnReportChart();
    
                reportChart.SetReport(reportMonthly);
                reportChart.Display();
    
                reportChart.SetReport(reportYearly);
                reportChart.Display();
            }
        }
    
        abstract class ReportChart
        {
            protected IReport report;
    
            public void SetReport(IReport rpt)
            {
                report = rpt;
            }
    
            public abstract void Display();
        }
    
        class ColumnReportChart : ReportChart
        {
            public override void Display()
            {
                Console.WriteLine("------------{0} by 'Column Chart!!'-------------", report.ReportName);
                foreach (var item in report.GetReportData())
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine();
            }
        }
    
        class PieReportChart : ReportChart
        {
            public override void Display()
            {
                Console.WriteLine("------------{0} by 'Pie Chart!!'-------------", report.ReportName);
                foreach (var item in report.GetReportData())
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine();
            }
        }
    
        interface IReport
        {
            string ReportName { get; }
            List<string> GetReportData();
        }
    
        class YearlyReport : IReport
        {
            public List<string> GetReportData()
            {
                var data = new List<string> 
                {
                  "2010,370",
                  "2011,420",
                  "2012,320",
                  "2013,490",
                };
                return data;
            }
    
            public string ReportName
            {
                get { return "Yearly Report"; }
            }
        }
    
        class MonthlyReport : IReport
        {
            public List<string> GetReportData()
            {
                var data = new List<string> 
                {
                  "Jan,370",
                  "Feb,420",
                  "Mar,320",
                  "Apr,490"
                };
                return data;
            }
    
            public string ReportName
            {
                get { return "Monthly Report"; }
            }
        }
  • 相关阅读:
    后缀自动机在复习
    冬令营模拟day2总结
    割点(模板)
    黑匣子
    挤牛奶
    上白泽慧音
    lca最小公共祖先祖先
    最小花费
    牛的旅行(标程)
    骑马修栅栏
  • 原文地址:https://www.cnblogs.com/cnbwang/p/3660457.html
Copyright © 2011-2022 走看看