zoukankan      html  css  js  c++  java
  • C#设计模式——模板方法(Template Method)

    一、概述
    在软件开发中,对某一项操作往往有固定的算法结构,而具体的子步骤会因为不同的需要而有所不同。如何可以在稳定算法结构的同时来灵活应对子步骤变化的需求呢?
    二、模板方法
    模板方法是一种常见的设计模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
    模板方法的结构图如下

    AbstractClass是抽象类,定义了抽象的操作
    ConcreteClass实现了抽象操作中与子类相关的特定步骤。
    三、示例
    在这里以实现一个公司的薪资系统为例介绍一下模板方法的应用。
    首先定义抽象类,一般建议将抽象的操作定义为非虚public方法,将子类需要定义的特定步骤定义为抽象的protected方法。

     1 publicabstractclass Employee
    2 {
    3 publicvoid GetSalary()
    4 {
    5 GetBasicSalary();
    6 AddBonus();
    7 }
    8
    9 protectedabstractvoid GetBasicSalary();
    10 protectedabstractvoid AddBonus();
    11 }

    接着分别实现经理和CEO的薪资

     1 publicclass Manager : Employee
    2 {
    3 protectedoverridevoid GetBasicSalary()
    4 {
    5 Console.WriteLine("Get Manager Basic Salary");
    6 }
    7
    8 protectedoverridevoid AddBonus()
    9 {
    10 Console.WriteLine("Add Manager Bonus");
    11 }
    12 }
    13
    14 publicclass CEO : Employee
    15 {
    16 protectedoverridevoid GetBasicSalary()
    17 {
    18 Console.WriteLine("Get CEO Basic Salary");
    19 }
    20
    21 protectedoverridevoid AddBonus()
    22 {
    23 Console.WriteLine("Add CEO Bonus");
    24 }
    25 }
  • 相关阅读:
    MD5加密
    HDU 1800 Flying to the Mars(Trie字典树 upper_bound)
    POJ 3624 Charm Bracelet(01背包 基础)
    hdu 1005 (规律 循环节)
    ZOJ 3710 friends(暴力 枚举 水)
    zoj 3714 Java Beans(枚举 水)
    hdu 1108 最小公倍数(数论基础 水)
    POJ 1797 Heavy Transportation(dijkstra )
    poj 3984 迷宫问题(bfs 打印路径)
    报数游戏(模拟 枚举)
  • 原文地址:https://www.cnblogs.com/saville/p/2176168.html
Copyright © 2011-2022 走看看