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

  • 相关阅读:
    虚拟机的三种联网模式(桥接模式、NAT 模式、仅主机模式)
    Vue 分页器 Pagination 实现点击分页器,平滑到对应的dom组件,而不是直接切换对应的组件
    img图片的处理技巧
    Vue中在DOM组件上动态绑定数据
    vue3.0中使用postcss-pxtorem
    vue中实现点击div有样式去除样式 无样式添加样式
    网易云音乐API,的调用方法 ,vue项目中(在本地使用)
    我的mixin.scss文件
    kendo-ui 几个有用的数据操作
    开发中常见的common.js--1
  • 原文地址:https://www.cnblogs.com/csj007523/p/14418543.html
Copyright © 2011-2022 走看看