首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >多态重构条件语句

多态重构条件语句

作者头像
Ryan_OVO
发布2023-10-19 19:33:19
发布2023-10-19 19:33:19
2430
举报
文章被收录于专栏:程序随笔程序随笔

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

代码语言:javascript
复制
#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

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

代码语言:javascript
复制
static void SwitchToPolym()
{
    var ctx = new Context();
    var price = ctx.ProcessCalculate(new FloridaShippingCalculation());
    Console.WriteLine($"{price}");
}

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

参考链接

31天重构学习笔记31. 使用多态代替条件判断

31天重构学习笔记11. 使用策略类

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档