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

  • 相关阅读:
    AS出现Connection timed out
    关于eclipse出现The selection cannot be launched,and there are no recent launches
    第十周周赛题解
    FJUT 2401 尼克的任务
    关于3月份的学习总结
    人生的第一题图论
    第六周周赛题解
    Drupal8 社区文档之积极的Drupal版本
    Drupal8 社区文档之Drupal安全吗
    Drupal8 社区文档之技术堆栈
  • 原文地址:https://www.cnblogs.com/csj007523/p/14418543.html
Copyright © 2011-2022 走看看