首页 > 其他分享 >CSharp: Facade Pattern in donet 6

CSharp: Facade Pattern in donet 6

时间:2022-11-16 21:37:17浏览次数:36  
标签:customer donet Pattern Geovin Facade Du public

 

    /// <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

相关文章