zoukankan      html  css  js  c++  java
  • 模板方法Template

    动机:

        在面向对象的世界里,代码复用主要体现在继承。然而当我们想让子类不仅能继承,而且也能重新定义方法时,很自然地就想到重写方法,但是这样是把整个方法的重写。如果我们有这样的一种需求,在父类的某个方法只能完成方法一个部分,而另一部分必须由子类去完成(这种应用在编写框架时遇到的很多),并且在调用这些由子类实现的方法有一定的逻辑。当有这样的需求时,我们应该怎么办——模板方法。

    意图:

    定 义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 

    代码实现

    View Code
        public class TemplateMethod
        {
            private bool falg = true;
    
            public bool Falg
            {
                get { return falg; }
                set { falg = value; }
            }
    
            public void Run() 
            {
                DoCommonMethod();
                if (falg)
                {
                    ExtendMethod();
                }
            }
            private void DoCommonMethod()//方法的公共部分
            {
                Console.WriteLine("公共方法");
            }
            protected virtual void ExtendMethod() //方法的扩展部分
            {
                Console.WriteLine("默认扩展方法");
            }
        }
    
        public class ConcreteMethod : TemplateMethod
        {
            protected override void ExtendMethod()
            {
                Console.WriteLine("大华扩展方法");
            }
        }
    
        //客户代码
            static void Main(string[] args)
            {
                ConcreteMethod m = new ConcreteMethod();
                m.Run();
            }
  • 相关阅读:
    POI_Excel表格数据导入导出实例--支持xls/xlsx格式
    js图片压缩工具---base64码上传插件,兼容h5和微信端(lrz.mobile.min.js)
    同一个页面,加载不同版本jQuery
    This method isn't transactional
    jquery.cookie的使用,记住用户名
    正则表达式 2017/6/12
    kSet 2017/6/6
    差分与二维差分
    求组合数
    高精度
  • 原文地址:https://www.cnblogs.com/dataadapter/p/2630163.html
Copyright © 2011-2022 走看看