4

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

 3 years ago
source link: https://blog.csdn.net/LoveLion/article/details/8299863
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

3 模板方法模式应用实例

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

      1. 实例说明

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

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

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

      (3) 系统显示利息。

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

       2. 实例类图

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

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

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

       3. 实例代码

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

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

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

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

     (5) Program:客户端测试类

       4. 结果及分析

      编译并运行程序,输出结果如下:

账号:张无忌

密码:123456

按活期利率计算利息!

显示利息!

      如果需要更换具体子类,无须修改源代码,只需修改配置文件App.config,例如将活期账户(CurrentAccount)改为定期账户(Saving Account),只需将存储在配置文件中的具体子类CurrentAccount改为SavingAccount,如下代码所示:

       重新运行客户端程序,输出结果如下:

账号:张无忌

密码:123456

按定期利率计算利息!

显示利息!

       如果需要增加新的具体子类(新的账户类型),原有代码均无须修改,完全符合开闭原则

 【作者:刘伟   http://blog.csdn.net/lovelion


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK