• 重复=易错+难改


    很多程序员都喜欢复制+粘贴

    这样的后果是重复代码太多,一处有问题 处处需要改,代码大量冗余

    使用模版方法,通过将不变行为迁移到父类(超类),去除子类重复代码来体现他的优势,模版方法提供了一个很好的代码复用平台

    例:

    using System;
    
    namespace ConsoleApplication2
    {
        /// <summary>
        /// 代码复用的父类/模版类
        /// </summary>
        public abstract class AbstractClass
        {
            //行为1
            public abstract int Operation1();
    
            //行为2
            public abstract int Operation2();
    
            /// <summary>
            /// 模版方法
            /// 此方法内的行为可能某些地方是通用的一样的  比如+1
            /// 某些地方可能是有变化的 如Operation1和Operation2可能执行不同的操作或返回不同的值
            /// </summary>
            /// <returns></returns>
            public int TempletedMethod()
            {
                //将子类可变的行为封装到抽象方法里
                int num = Operation1() + Operation2();
                
                //可以将+1看成是通用的操作
                return num +1;  //模版方法继续执行通用的操作 
            }
        }
    
        public class A : AbstractClass
        {
            //子类实现可能会有变化的行为1
            public override int Operation1()
            {
                return 1;
            }
            //子类实现可能会有变化的行为2
            public override int Operation2()
            {
                return 1;
            }
        }
    
        public class B : AbstractClass
        {
            //子类实现可能会有变化的行为1
            public override int Operation1()
            {
                return 2;
            }
            //子类实现可能会有变化的行为2
            public override int Operation2()
            { 
                return 2;
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                AbstractClass a = new A();
                int Aresult = a.TempletedMethod();
                Console.WriteLine(Aresult);
    
                AbstractClass b = new B();
                int Bresult = b.TempletedMethod();
                Console.WriteLine(Bresult);
                Console.Read();
    
                //结果为3和5
            }
        }
    }
  • 相关阅读:
    内敛函数宏定义差别
    oracle函数 TRIM(c1 from c2)
    oracle函数 TRANSLATE(c1,c2,c3)
    oracle函数 SUBSTRB(c1,n1[,n2])
    oracle函数 SUBSTR(c1,n1[,n2])
    oracle函数 SOUNDEX(c1)
    oracle函数 REPLACE(c1,c2[,c3])
    oracle函数 RTRIM(c1,[,c2])
    oracle函数 LTRIM(c1,[,c2])
    oracle函数 RPAD(c1,n[,c2])
  • 原文地址:https://www.cnblogs.com/Scissors/p/2971661.html
Copyright © 2020-2023  润新知