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

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

posted @   大树2  阅读(33)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-02-19 web前端高级进阶内容列表
2020-02-19 VUE 归纳总结
2020-02-19 微信小程序开发
2014-02-19 .net EntityFramework用法探索系列 1
2014-02-19 EntityFramework ,ef 介绍
点击右上角即可分享
微信分享提示