多态重构条件语句
程序员文章站
2023-11-26 13:46:16
首先,在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}"); }
就这么简单,细心的我们可以发现,这种多态的写法好像策略模式,没错!设计模式中绝大数的模式都是多态的应用罢了。