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"; }
            }
        }
  • 相关阅读:
    python--tkinter桌面编程开发--记事本
    Python--面向对象编程
    Python--面向对象编程--时钟实例开发
    Python学习笔记--2--面向对象编程
    Python学习笔记--1
    epoll聊天室的实现
    操作系统--虚拟存储器
    操作系统--存储器管理
    操作系统--分页存储管理中逻辑地址转换为物理地址
    操作系统--处理机调度与死锁
  • 原文地址:https://www.cnblogs.com/cnbwang/p/3660457.html
Copyright © 2011-2022 走看看