• 模板方法(Template Method)模式


    /*
    * 抽象模版(AbstractClass)角色有如下的责任:
      定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。
      定义并实现了一个模版方法。这个模版方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,
      而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。

    * 具体模版(ConcreteClass)角色有如下的责任:
      实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。
      每一个抽象模版角色都可以有任意多个具体模版角色与之对应,
      而每一个具体模版角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同
    */

    模板方法模式:定义一个操作中的算术骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构

           即可以从新定义该算法的某些特定步骤。

            static void Main(string[] args)
            {
                ConcreteClass c = new ConcreteClass();
                c.TemplateMethod(); 
    
                Console.ReadLine();
            }
    
        /// <summary>
        /// 抽象模版(AbstractClass)角色
        /// </summary>
        public abstract class AbstractClass
        {
            // 方法
            abstract public void PrimitiveOperation1();
            abstract public void PrimitiveOperation2();
    
            // 模板方法
            public void TemplateMethod()
            {
                //固定模板。任何子类继承它 都是一样,唯有  
                //PrimitiveOperation1(); PrimitiveOperation2(); 会变化
                Console.WriteLine("你的身高多少?体重多少?");
                PrimitiveOperation1();
                PrimitiveOperation2();
            }
    
        }
    
        // 具体模版(ConcreteClass)角色
        public class ConcreteClass : AbstractClass
        { 
            public override void PrimitiveOperation1()
            {
                Console.WriteLine("身高173cm");
            }
    
            public override void PrimitiveOperation2()
            {
                Console.WriteLine("55公斤");
            }
        }
  • 相关阅读:
    Oracle to_char格式化函数
    电脑快捷键大全
    Failed to create the Java Virtual Machine (Myeclipse或者eclipse启动报错)
    Java 面试题
    UVA1108 Mining Your Own Business
    无向图的连通性
    [NOI Online #2 提高组]子序列问题
    [NOI Online #3 提高组]优秀子序列
    POJ2430 Lazy Cows
    UVA1633 Dyslexic Gollum
  • 原文地址:https://www.cnblogs.com/dragon-L/p/3780519.html
Copyright © 2020-2023  润新知