Replace conditional with Polymorphism

namespace RefactoringLib.Ploymorphism.Before
{
    public class Customer { }
    
    public class Employee : Customer { }
    
    public class NonEmployee : Customer { }
    
    public class OrderProcessor
    {
        public decimal ProcessOrder(Customer customer, IEnumerable<Product> products)
        {
            decimal orderTotal = products.Sum(p => p.Price);
            
            Type customerType = customer.GetType();
            if (customerType == typeof(Employee))
            {
                orderTotal -= orderTotal * 0.15m;
            }
            else if (customerType == typeof(NonEmployee))
            {
                orderTotal -= orderTotal * 0.05m;
            }

            return orderTotal;
        }
    }
}
View Code

相关文章: