模板方法
1.定义通用处理流程,实现通用部分,可变部分留作扩展
代码实现:
模板:
namespace TempleteMethodPattern
{
public abstract class BaseClient
{
public decimal Deposit { get; set; }
public double Percent { get; set; }
public decimal Interest { get; set; }
public void Query(int userId,string password,string userName)
{
if (CheckUser(userId, password))
{
GetDeposit();
GetPercent();
GetInterest();
DisplayToClient(userName);
}
}
private bool CheckUser(int userId,string password)
{
return true;
}
private void GetDeposit()
{
Random random = new Random();
Deposit = random.Next(10000, 1000000);
}
protected abstract void GetPercent();
private void GetInterest()
{
Interest = Deposit * (decimal)Percent;
}
protected virtual void DisplayToClient(string name)
{
Console.WriteLine($"尊敬的{name}客户,您的利率:{Percent}%,利息:{Interest}");
}
}
}
客户类:
public class NormalClient : BaseClient
{
protected override void GetPercent()
{
Percent = 0.03;
}
}
public class VipClient : BaseClient
{
protected override void DisplayToClient(string name)
{
Console.WriteLine($"尊贵{name}客户,您的利率:{Percent}%,利息:{Interest}"+Environment.NewLine+ "理财有风险,入行需谨慎!");
}
protected override void GetPercent()
{
Percent = 0.05;
}
}
代码调用:
class Program
{
static void Main(string[] args)
{
BaseClient normal = new NormalClient();
normal.Query(02,"123","Bob");
BaseClient vipClient = new VipClient();
vipClient.Query(01, "456", "Alex");
}
}
结果:
