模板模式

 


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

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

复制代码
 public abstract class Employee  
 {         public void GetSalary()       
           {            
             GetBasicSalary();   
             AddBonus(); 
           }         
         protected  abstract void GetBasicSalary();   
          protected abstract void AddBonus();  
}
复制代码

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

复制代码
 1 public class Manager : Employee
 2     {
 3 protected override void GetBasicSalary()
 4         {
 5             Console.WriteLine("Get Manager Basic Salary");
 6         }
 7 
 8 protected override void AddBonus()
 9         {
10             Console.WriteLine("Add Manager Bonus");
11         }
12     }
13 
14 publicclass CEO : Employee
15     {
16 protected override void GetBasicSalary()
17         {
18             Console.WriteLine("Get CEO Basic Salary");
19         }
20 
21 protected override void AddBonus()
22         {
23             Console.WriteLine("Add CEO Bonus");
24         }
25     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值