zoukankan      html  css  js  c++  java
  • 模板方法模式深度解析(二)

    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

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

         

      发评论

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

    • 相关阅读:
      XAF 有条件的对象访问权限
      XAF 顯示 UnInplace Report(設置自定義條件顯示報表,不是根據選擇ListView記錄條件顯示報表)
      XAF 如何自定义PivotGrid单元格显示文本?
      XAF 如何布局详细视图上的按钮
      XAF How to set size of a popup detail view
      XAF Delta Replication Module for Devexpress eXpressApp Framework
      XAF 帮助文档翻译 EasyTest Basics(基础)
      XAF 用户双击ListView记录时禁止显示DetailView
      XAF How to enable LayoutView mode in the GridControl in List Views
      XAF 如何实现ListView单元格批量更改?
    • 原文地址:https://www.cnblogs.com/luckForever/p/7254829.html
    Copyright © 2011-2022 走看看