• 模板方法模式深度解析(二)


    3 模板方法模式应用实例

          下面通过一个应用实例来进一步学习和理解模板方法模式。

     

          1. 实例说明

          某软件公司欲为某银行的业务支撑系统开发一个利息计算模块,利息计算流程如下:

          (1) 系统根据账号和密码验证用户信息,如果用户信息错误,系统显示出错提示;

          (2) 如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(如活期账户和定期账户具有不同的利息计算公式);

          (3) 系统显示利息。

          试使用模板方法模式设计该利息计算模块。

         

           2. 实例类图

          通过分析,本实例结构图如图3所示。

    3 银行利息计算模块结构图

           在图3中,Account充当抽象类角色,CurrentAccountSavingAccount充当具体子类角色。

     

           3. 实例代码

           (1) Account:账户类,充当抽象类。

    1. //Account.cs  
    2. using System;  
    3.   
    4. namespace TemplateMethodSample  
    5.  
    6.     abstract class Account  
    7.      
    8.         //基本方法——具体方法  
    9.         public bool Validate(string account, string password)   
    10.          
    11.             Console.WriteLine("账号:{0}"account);  
    12.             Console.WriteLine("密码:{0}"password);  
    13.             //模拟登录  
    14.             if (account.Equals("张无忌"&& password.Equals("123456"))   
    15.              
    16.                 return true 
    17.              
    18.             else   
    19.              
    20.                 return false 
    21.              
    22.          
    23.   
    24.         //基本方法——抽象方法  
    25.         public abstract void CalculateInterest();  
    26.   
    27.         //基本方法——具体方法  
    28.         public void Display()   
    29.          
    30.             Console.WriteLine("显示利息!");  
    31.          
    32.   
    33.         //模板方法  
    34.         public void Handle(string account, string password)   
    35.          
    36.             if (!Validate(account,password))   
    37.              
    38.                 Console.WriteLine("账户或密码错误!");  
    39.                 return 
    40.              
    41.             CalculateInterest();  
    42.             Display();  
    43.          
    44.      
    45.  

           (2) CurrentAccount:活期账户类,充当具体子类。

    1. //CurrentAccount.cs  
    2. using System;  
    3.   
    4. namespace TemplateMethodSample  
    5.  
    6.     class CurrentAccount Account  
    7.      
    8.         //覆盖父类的抽象基本方法  
    9.         public override void CalculateInterest()   
    10.          
    11.             Console.WriteLine("按活期利率计算利息!");  
    12.          
    13.      
    14.  

           (3) SavingAccount:定期账户类,充当具体子类。

    1. //SavingAccount.cs  
    2. using System;  
    3.   
    4. namespace TemplateMethodSample  
    5.  
    6.     class SavingAccount Account  
    7.      
    8.         //覆盖父类的抽象基本方法  
    9.         public override void CalculateInterest()   
    10.          
    11.             Console.WriteLine("按定期利率计算利息!");  
    12.          
    13.      
    14.  

           (4) 配置文件App.config,在配置文件中存储了具体子类的类名。

    0

    阅读 评论 收藏 转载 喜欢 打印举报
    • 评论加载中,请稍候...
    发评论

         

      发评论

      以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    • 相关阅读:
      golang学习笔记(7)--函数式编程
      golang学习笔记(6)--面向接口编程
      go语言学习笔记(5)--面向对象
      go语言学习笔记(4)--容器与字符串的基本概念
      go语言学习笔记(3)--简单的程序设计
      go语言学习笔记(2)--go语言语法细节与基本数据类型
      go语言学习笔记(1)--第一个go语言程序
      Linux学习笔记系列(1)
      Scrapy爬虫小demo总结
      python基础总结(6)
    • 原文地址:https://www.cnblogs.com/luckForever/p/7254829.html
    Copyright © 2020-2023  润新知