zoukankan      html  css  js  c++  java
  • 开启Castle之旅前奏之回顾Template Method Pattern(模板方法模式)

    模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。


     

    参看下列简单实例代码:

    AbstractClass为基类,包含模板方法TemplateMethod(),在这个方法中调用PrimitiveOperation1()和PrimitiveOperation2(),其中这两个方法由子类ConcreteClass实现.

    using System;

    // "AbstractClass"


    abstract
    class AbstractClass
    {
      // Methods
      abstract public void PrimitiveOperation1();
      abstract public void PrimitiveOperation2();

      // The Template method
      public void TemplateMethod()
      {
        Console.WriteLine(
                    "In AbstractClass.TemplateMethod()");
        PrimitiveOperation1();
        PrimitiveOperation2();
      }
    }

    // "ConcreteClass"


    class
    ConcreteClass : AbstractClass
    {
      // Methods
      public override void PrimitiveOperation1()
      {
        Console.WriteLine(
            "Called ConcreteClass.PrimitiveOperation1()");
      }

      public override void PrimitiveOperation2()
      {
        Console.WriteLine(
            "Called ConcreteClass.PrimitiveOperation2()");
      }
    }

    /// <summary>
    /// Client test
    /// </summary>
    public class Client
    {
      public static void Main( string[] args )
      {
        // Create instance and call template method
        ConcreteClass c = new ConcreteClass();
        c.TemplateMethod();

      }
    }


    Output

    In AbstractClass.TemplateMethod()
    Called ConcreteClass.PrimitiveOperation1()
    Called ConcreteClass.PrimitiveOperation2()

     

  • 相关阅读:
    事件修饰符(.passive)
    vue中$nextTick函数(异步dom更新)
    使用ellipsis时的问题和控制文字n行显示(webkit-box方法)
    font-size 设为0 解决行内元素边距问题(空白字符带来的间距问题)
    Vue-eBookReader 学习笔记(阅读进度部分)
    Vue-eBookReader 学习笔记(阅读器解析和渲染部分)
    mysql 免密登录
    ansible 复制文件到本地 localhost
    对象存储测试工具 cosbench
    Mac 下安装 mongodb
  • 原文地址:https://www.cnblogs.com/ice/p/128287.html
Copyright © 2011-2022 走看看