AbstractClass是抽象类,定义了抽象的操作 ConcreteClass实现了抽象操作中与子类相关的特定步骤。 三、示例 在这里以实现一个公司的薪资系统为例介绍一下模板方法的应用。 首先定义抽象类,一般建议将抽象的操作定义为非虚public方法,将子类需要定义的特定步骤定义为抽象的protected方法。
1 public abstract class Employee 2 { 3 public void GetSalary() 4 { 5 GetBasicSalary(); 6 AddBonus(); 7 } 8 9 protected abstract void GetBasicSalary(); 10 protected abstract void AddBonus(); 11 }
接着分别实现经理和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 public class 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 }
最新评论