欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

多态重构条件语句

程序员文章站 2022-10-10 22:19:44
首先,在C 中,多态的体现是什么?虚函数、抽象方法、接口。废话不多说,直接上代码: 我们抽象出来基类,将其改造为抽象类和抽象方法,使其在子类中重写各自的逻辑,而后具体的选择(也就是条件语句)交给客户端来处理。 就这么简单,细心的我们可以发现,这种多态的写法好像策略模式,没错!设计模式中绝大数的模式都 ......

首先,在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}");
}

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

参考链接


策略模式重构switch/case分支代码