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");
    }

  • 相关阅读:
    Python将文件夹下的文件名写入excel方便统计
    Python利用openpyxl带格式统计数据(2)- 处理mysql数据
    Python利用openpyxl带格式统计数据(1)- 处理excel数据
    spfa 算法(队列优化的Bellman-Ford算法)
    bellman_ford算法(边数限制的最短路,边权可能为负)
    堆优化dijkstra
    朴素dijkstra
    1547. 切棍子的最小成本(区间dp)
    1546. 和为目标值的最大数目不重叠非空子数组数目(前缀和+dp)
    32场双周赛(模拟,模拟,前缀和加状态压缩)
  • 原文地址:https://www.cnblogs.com/csj007523/p/14418543.html
Copyright © 2011-2022 走看看