zoukankan      html  css  js  c++  java
  • 【2016-10-13】【坚持学习】【Day4】【模板方法模式】

    今天学习模板方法模式

    例子代码;

    模板抽象类,定义了一套流程,有一些方法已经实现,有一些抽象方法需要继承它的子类实现

        abstract class DataViewer
        {
            //抽象方法:获取数据
            public abstract void GetData();
    
            //具体方法:转换数据
            public void ConvertData() 
            {
                Console.WriteLine("将数据转换为XML格式。");
            }
    
            //抽象方法:显示数据
            public abstract void DisplayData();
    
            //钩子方法:判断是否为XML格式的数据
            public virtual bool IsNotXMLData()
            {
                return true;
            }
    
            //模板方法
            public void Process()
            {
                GetData();
                //如果不是XML格式的数据则进行数据转换
                if (IsNotXMLData())
                {
                    ConvertData();
                }
                DisplayData();
            }
        }

    具体实现模板类:重写抽象方法,实现具体逻辑,重写钩子方法,设置钩子方法新值

     class XMLDataViewer : DataViewer
        {
            //实现父类方法:获取数据
            public override void GetData() 
            {
                Console.WriteLine("从XML文件中获取数据。");
            }
    
            //实现父类方法:显示数据
            public override void DisplayData() 
            {
                Console.WriteLine("以柱状图显示数据。");
            }
    
            //覆盖父类的钩子方法
            public override bool IsNotXMLData()
            {
                return false;
            }
        }

    主程序:

      DataViewer dv;
                dv = new XMLDataViewer();
                dv.Process();

    作者:zscmj
    出处:http://www.cnblogs.com/zscmj/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    简单C#、asp.net mvc验证码的实现
    c# 局域网文件传输实例
    c# http get请求与post请求实例
    轻松3步实现c#windowsform窗体美化
    c#内部类的使用
    java
    java
    java
    java
    java
  • 原文地址:https://www.cnblogs.com/zscmj/p/5958109.html
Copyright © 2011-2022 走看看