对if/else重构

以前在 csdn上看到一篇  “你还在使用if/else吗?”文章,提到如果你还在使用if语句,那么你就需要对你的代码重构。那篇文章许多人的评论上褒贬不一,但我现在想举的一个例子是对if/else的重构。(当然,是从别人那偷学来的,^_^)。

enum employeetype

{

     salers;

     engineer;

   manager;

}

if(employee==emloyeetype.salers)

{

      //如何发工资

}

else if(employee==employeetype.manager)

{

   //如何发工资

}

//................

这样写未尝不可,但是如果要是新加入一个角色,那么会如何处理呢?你就需要修改哪个枚举,并且后贴上个if/else,那么我按照面向对象的想法来实现重构呢?

abstract class employee

{

//.....getsalary   abstract

}

class manager:employee

{

//.....      override method

}

//......other roles   classes

class Salary

{

    static void Main()

{

   employee em = new Manager();

em.Getsalary();

 

}

}

 

 

这个例子是用多态来解决if/else结构中的多重选择问题,使得但变化来临时,只需要对系统进行扩展,而不是修改,开闭原则(ocp)即是此意。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值