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

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 @ 2021-02-19 22:40  大树2  阅读(26)  评论(0编辑  收藏  举报