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 }
  • 相关阅读:
    vue后台管理系统——权限管理模块
    vue后台管理系统——用户管理模块
    vue后台管理系统——主页布局
    vue后台管理系统——登录/退出功能
    vue后台管理系统
    kratos 日志请求响应记录
    composer 版本切换
    Nacos搭建并使用
    go micro 搭建微服务
    consul命令行参数
  • 原文地址:https://www.cnblogs.com/saville/p/2176168.html
Copyright © 2011-2022 走看看