首页 > 代码库 > 【2016-10-13】【坚持学习】【Day4】【模板方法模式】

【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】【模板方法模式】