/// <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 已经 批准.
标签:customer,donet,Pattern,Geovin,Facade,Du,public From: https://www.cnblogs.com/geovindu/p/16897548.html