zoukankan      html  css  js  c++  java
  • 方法级别的抽象

    //修改前
    public class Customer
    {
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public bool IsPriorityCustomer { get; set; }
        public decimal AnnualIncome { get; set; }
    }
    public class ProspectiveCustomer
    {
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public decimal AnnualIncome { get; set; }
    }
    
    
    public class ProspectiveCustomerValidator
    {
        public Customer CreateValidatedCustomer(
        ProspectiveCustomer prospectiveCustomer)
        {
            if (string.IsNullOrWhiteSpace(
            prospectiveCustomer.FirstName))
            {
                throw new ArgumentException("Invalid FirstName");
            }
            if (string.IsNullOrWhiteSpace(
            prospectiveCustomer.SecondName))
            {
                throw new ArgumentException("Invalid SecondName");
            }
            var newValidCustomer = new Customer
            {
                FirstName = prospectiveCustomer.FirstName,
                SecondName = prospectiveCustomer.SecondName
            };
            if (prospectiveCustomer.AnnualIncome > 100000)
            {
                newValidCustomer.IsPriorityCustomer = true;
            }
            return newValidCustomer;
        }
    }
    //修改后
    using System;
    
    public class Customer
    {
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public bool IsPriorityCustomer { get; set; }
        public decimal AnnualIncome { get; set; }
    }
    public class ProspectiveCustomer
    {
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public decimal AnnualIncome { get; set; }
    }
    public class ProspectiveCustomerValidator
    {
        // Higher abstraction level
        public Customer CreateValidatedCustomer(
        ProspectiveCustomer prospectiveCustomer)
        {
            EnsureValidDetails(prospectiveCustomer);
            var validatedCustomer =
            CreateNewCustomerFrom(prospectiveCustomer);
            SetCustomerPriority(validatedCustomer);
            return validatedCustomer;
        }
        // Medium abstraction level
        private static void EnsureValidDetails(
        ProspectiveCustomer prospectiveCustomer)
        {
            EnsureValidFirstName(prospectiveCustomer);
            EnsureValidSecondName(prospectiveCustomer);
        }
    
        private static Customer CreateNewCustomerFrom(
        ProspectiveCustomer prospectiveCustomer)
        {
            return new Customer
            {
                FirstName = prospectiveCustomer.FirstName,
                SecondName = prospectiveCustomer.SecondName,
                AnnualIncome = prospectiveCustomer.AnnualIncome
            };
        }
        // Low abstraction level
        private static void EnsureValidFirstName(
        ProspectiveCustomer prospectiveCustomer)
        {
            if (string.IsNullOrWhiteSpace(prospectiveCustomer.FirstName))
            {
                throw new ArgumentException("Invalid FirstName");
            }
        }
        private static void EnsureValidSecondName(
        ProspectiveCustomer prospectiveCustomer)
        {
            if (string.IsNullOrWhiteSpace(
            prospectiveCustomer.SecondName))
            {
                throw new ArgumentException("Invalid SecondName");
            }
        }
        private static void SetCustomerPriority(Customer customer)
        {
    
            if (customer.AnnualIncome > 100000)
            {
                customer.IsPriorityCustomer = true;
            }
        }
    }
  • 相关阅读:
    对png空白部分取消button事件教程
    Flash Builder4.6破解方案(绝对有效)
    网页程序Flex动态嵌入字体
    老虎机等转动图片思路
    我认为最佳的新手引导制作办法
    26
    sql server 2005建立数据库,表,约束,账户密码,权限,基本查询删除语句
    ASP.NET入门教程:ASP.NET和ASP区别
    .net面试题及答案(一)(转)
    ASP.NET入门教程:认识ASP.NET
  • 原文地址:https://www.cnblogs.com/gaocong/p/6688608.html
Copyright © 2011-2022 走看看