多态重构条件语句

首先,在C#中,多态的体现是什么?虚函数、抽象方法、接口。废话不多说,直接上代码:

#region 多态重构switch...case....

    public abstract class ShippingCalculation
    {
        public abstract decimal Calculate();
    }

    public class AlaskShippingCalculation : ShippingCalculation
    {
        public override decimal Calculate()
        {
            return 15m;
        }
    }

    public class NewYorkShippingCalculation : ShippingCalculation
    {
        public override decimal Calculate()
        {
            return 10m;
        }
    }

    public class FloridaShippingCalculation : ShippingCalculation
    {
        public override decimal Calculate()
        {
            return 3m;
        }
    }

    public class Context
    {
        public decimal ProcessCalculate(ShippingCalculation shippingCalculation)
        {
            return shippingCalculation.Calculate();
        }
    }

    #endregion

我们抽象出来基类,将其改造为抽象类和抽象方法,使其在子类中重写各自的逻辑,而后具体的选择(也就是条件语句)交给客户端来处理。

static void SwitchToPolym()
{
    var ctx = new Context();
    var price = ctx.ProcessCalculate(new FloridaShippingCalculation());
    Console.WriteLine($"{price}");
}

就这么简单,细心的我们可以发现,这种多态的写法好像策略模式,没错!设计模式中绝大数的模式都是多态的应用罢了。

参考链接
31天重构学习笔记31. 使用多态代替条件判断
31天重构学习笔记11. 使用策略类
策略模式重构switch/case分支代码

转载于:https://www.cnblogs.com/zhiyong-ITNote/p/11142750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值