zoukankan      html  css  js  c++  java
  • 模板方法设计模式:定义抽象类-模板:定义业务流程,执行步骤--》各业务类继承抽象类,实现各自不同 具体的执行步骤

    1.定义抽象类-模板:定义业务流程,执行步骤,各业务类继承抽象类,实现各具体的执行步骤

    /// <summary>
    /// 银行客户端
    /// </summary>
    public abstract class Client
    {
    public void Query(int id, string name, string password)
    {
    if (this.CheckUser(id, password))
    {
    double balance = this.QueryBalance(id);
    double interest = this.CalculateInterest(balance);
    this.Show(name, balance, interest);
    }
    else
    {
    Console.WriteLine("账户密码错误");
    }
    }

    public bool CheckUser(int id, string password)
    {
    return DateTime.Now < DateTime.Now.AddDays(1);
    }

    public double QueryBalance(int id)
    {
    return new Random().Next(10000, 1000000);
    }

    /// <summary>
    /// 活期 定期 利率不同
    /// </summary>
    /// <param name="balance"></param>
    /// <returns></returns>
    public abstract double CalculateInterest(double balance);

    public virtual void Show(string name, double balance, double interest)
    {
    Console.WriteLine("尊敬的{0}客户,你的账户余额为:{1},利息为{2}",
    name, balance, interest);
    }
    private void show(string name, double balance, double interest)
    {
    Console.WriteLine("尊贵的{0} vip客户,您的账户余额为:{1},利息为{2}",
    name, balance, interest);
    }

    }

    2------------- 子类继承抽象类,实现不同的步骤

    /// <summary>
    /// 银行客户端
    /// </summary>
    public class ClientVip : Client
    {
    /// <summary>
    /// 活期 定期 利率不同
    /// </summary>
    /// <param name="balance"></param>
    /// <returns></returns>
    public override double CalculateInterest(double balance)
    {
    return balance * 0.005;
    }

    public override void Show(string name, double balance, double interest)
    {
    Console.WriteLine("尊贵的{0} vip客户,您的账户余额为:{1},利息为{2}",
    name, balance, interest);
    }
    }

    3.----------调用-------

    {
    Client client = new ClientCurrent();
    client.Query(387, "22, "123456");
    }
    {
    Client client = new ClientRegular();
    client.Query(448, "11", "000000");
    }

  • 相关阅读:
    html+css实现简易下拉菜单
    Win10 设置外网多用户远程桌面连接
    ubuntu 14.04 下svn + apache2 配置
    JavaScript 学习笔记(一)
    生成Log文件的写法
    运行执行sql文件脚本的例子
    css实现文本框和下拉框结合的案例
    angularjs 1 开发简单案例(包含common.js,service.js,controller.js,page)
    将字符串转成只有首字母是大写
    java之springboot的spring-boot-starter-aop的切面编程的使用(四)
  • 原文地址:https://www.cnblogs.com/csj007523/p/14418543.html
Copyright © 2011-2022 走看看