码迷,mamicode.com
首页 > 其他好文 > 详细

【2016-10-13】【坚持学习】【Day4】【模板方法模式】

时间:2016-10-14 00:18:06      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

今天学习模板方法模式

 

例子代码;

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

    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();

技术分享

 

【2016-10-13】【坚持学习】【Day4】【模板方法模式】

标签:

原文地址:http://www.cnblogs.com/zscmj/p/5958109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!