• 设计模式之模板方法模式


    Template Method Pattern

    模板方法模式组成对象:

    • AbstractClass:定义并实现模板方法,声明模板方法中使用到的特定步骤,需要延迟到子类实现的,则为抽象方法。(模板方法是不可变的,可为密封)
    • ConcreteClass:实现抽象方法,这样就将相应的实现延迟到了子类

    模板方法模式类图:

    模板方法实例:

      业务场景,有一个旅游项目,一定会包含吃特色美食以及看特色景点,因为会有很多地方,各个地方都有差异。这里吃和看两个行为都是固定的,但是具体吃什么和看什么都是不固定,所以这里用模板方法模式

    类图:

    实例代码

     1     /// <summary>
     2     /// 旅游项目
     3     /// </summary>
     4     abstract class Tourism
     5     {
     6         public void Travel()
     7         {
     8             Console.WriteLine("景点:" + GetScenerySpot());
     9             Console.WriteLine("美食:" + GetFood());
    10         }
    11 
    12         protected abstract string GetScenerySpot();
    13         protected abstract string GetFood();
    14     }
    15 
    16 
    17     class ShangHaiTourism : Tourism
    18     {
    19         protected override string GetScenerySpot()
    20         {
    21             return "东方明珠";
    22         }
    23 
    24         protected override string GetFood()
    25         {
    26             return "本帮菜";
    27         }
    28     }
    29 
    30 
    31     class JiangxiTourism : Tourism
    32     {
    33         protected override string GetScenerySpot()
    34         {
    35             return "庐山";
    36         }
    37 
    38         protected override string GetFood()
    39         {
    40             return "赣菜";
    41         }
    42     }
    业务代码
     1         static void Main(string[] args)
     2         {
     3             Tourism tourism = new JiangxiTourism();
     4             tourism.Travel();
     5             tourism = new ShangHaiTourism();
     6             tourism.Travel();
     7 
     8             Console.ReadLine();
     9         }
    10     }
    调用代码

     模板方法模式就是一个比较简单的多态的应用。

  • 相关阅读:
    ubuntu 12.04 挂载windows分区
    linux ubuntu12.04 配置jdk
    java.lang.IllegalStateException: Cannot forward after response has been committe
    linux ubuntu 安装vim!
    linux ubuntu12.04 eclipse安装 svn
    linux下 android环境配置!
    ubuntu 12.04 配置telnet
    测试下来比较好用的jquery upload插件——uploadify
    google市场又能用了
    当php.ini里post_max_size配置段使用简写法导致php无法接收$_POST值的!
  • 原文地址:https://www.cnblogs.com/XzcBlog/p/5210039.html
Copyright © 2020-2023  润新知