CSharp: Facade Pattern in donet 6
/// <summary>
/// 外观模式 Facade Pattern
/// 银行
/// </summary>
public class Bank
{
public bool IsUntrustworthy(Customer customer, decimal loanAmount)
{
Console.WriteLine($"检查客户的信用状况: {customer.Name}");
return false;
}
}
/// <summary>
/// 外观模式 Facade Pattern
/// 信用卡
/// </summary>
public class Credit
{
public bool HasBadCredit(Customer customer)
{
Console.WriteLine($"为客户检查信用: {customer.Name}");
return false;
}
}
/// <summary>
/// 外观模式 Facade Pattern
/// 客户
/// </summary>
public class Customer
{
/// <summary>
///
/// </summary>
public string Name { get; set; } = string.Empty;
}
/// <summary>
/// 外观模式 Facade Pattern
/// 客户服务
/// </summary>
public class CustomerService
{
/// <summary>
/// 查找客户
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public Customer Find(string name) =>
new() { Name = name };
}
/// <summary>
/// 外观模式 Facade Pattern
/// 贷款
/// </summary>
public class Loan
{
/// <summary>
///
/// </summary>
/// <param name="customer"></param>
/// <returns></returns>
public bool HasBadLoans(Customer customer)
{
Console.WriteLine($"为客户检查贷款: {customer.Name}");
return false;
}
}
/// <summary>
/// 外观模式 Facade Pattern
/// </summary>
public class Mortgage
{
/// <summary>
/// 银行
/// </summary>
private readonly Bank _bank;
/// <summary>
/// 贷款
/// </summary>
private readonly Loan _loan;
/// <summary>
/// 信用卡
/// </summary>
private readonly Credit _credit;
/// <summary>
/// 客户服务
/// </summary>
private readonly CustomerService _customerService;
/// <summary>
///
/// </summary>
public Mortgage()
{
_bank = new Bank();
_loan = new Loan();
_credit = new Credit();
_customerService = new CustomerService();
}
/// <summary>
///
/// </summary>
/// <param name="customerName"></param>
/// <param name="loanAmount"></param>
/// <returns></returns>
public bool IsEligible(string customerName, decimal loanAmount)
{
Console.WriteLine($"客户 {customerName} 想申请贷款 {loanAmount:C} .\n");
var customer = _customerService.Find(customerName);
if (_bank.IsUntrustworthy(customer, loanAmount))
{
return false;
}
if (_loan.HasBadLoans(customer))
{
return false;
}
if (_credit.HasBadCredit(customer))
{
return false;
}
return true;
}
}
/// <summary>
/// 外观模式 Facade Pattern
/// 抵押贷款
/// </summary>
public static class MortgageExecutor
{
/// <summary>
///
/// </summary>
public static void Execute()
{
ConsoleExtension.WriteSeparator("外观模式 Facade Pattern--Mortgage demo");
var mortgage = new Mortgage();
const string customerName = "Geovin Du";
// Evaluate mortgage eligibility for the customer.
var isEligible = mortgage.IsEligible(customerName, 125000);
var status = isEligible ? "批准" : "拒绝";
Console.WriteLine($"抵押贷款给 {customerName} 已经 {status}.");
}
}
调用:
Geovin.Du.DuFacade.DuMortgage.MortgageExecutor.Execute();
输出:
Hello, Geovin Du! 学习 .net 6 外观模式 Facade Pattern--Mortgage demo -------------------------------------------------- 客户 Geovin Du 想申请贷款 ¥125,000.00 . 检查客户的信用状况: Geovin Du 为客户检查贷款: Geovin Du 为客户检查信用: Geovin Du 抵押贷款给 Geovin Du 已经 批准.

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号