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

Posted zscmj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();

 

以上是关于2016-10-13坚持学习Day4模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式----模板方法模式

2016-10-17坚持学习Day8简单工厂模式

2016-10-17坚持学习Day8工厂方法模式

2016-10-14坚持学习Day5单例模式

threejs学习day4:材质

java学习 Day4