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 }
    复制代码
     
  • 相关阅读:
    nodejs学习笔记
    javascript 中常用的判断和循环方法
    javascript中几种数据类型。
    通过Jquery找对象的方法
    js 原生代码找对象的方法
    网页设计时的渐进增强和优雅降级原则
    require.js笔记
    This in JavaScript
    [转] java.lang.IllegalArgumentException: Document base D:apache-tomcat-7.0.47webappsXXX错误
    后台获取前台表单数据
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6007866.html
Copyright © 2011-2022 走看看