面向对象思想 - 面向对象与if else语句

说明

  • 博文:你还在用if else吗?中写道:
  • 面向过程设计和面向对象设计的主要区别是:是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else,当然,界面表现层除外,即使你使用Java/C#这样完全面向对象的语言,也只能说明你的思维停留在传统的面向过程语言上。

问题

  • 由以上博文可知:面向对象可以替代大部分情况下if else的使用。
  • 然而面向对象是如何替代if else的?在哪些情况下才能替换?

if else语句的作用

  • if是判断语句,if else实现分支,和switch case作用一致。

诱因

  • 代码复用和扩展性是编码的基本准则,代码封装是实现复用的基本方式,在面向过程编程中,为了更多的代码复用,以及专注于一个个执行过程,时常会忽视扩展性,导致过早的过度封装,过早的将不同功能代码封装在一起,而没有留到合适的地方。
  • 封装的前提是具有相同的操作,完全相同的处理是非常少的,分支和条件总是存在的,因此时常会大量使用if else语句来实现封装。
  • 面向过程中的判断作用范围是非常小的,并且范围是无法扩散和传递的,因此导致一个问题:对一个条件的重复判断。

面向对象

  • 面向对象无法彻底解决这个问题,也不可能完全干掉if else语句,只是尽可能的减少冗余的if else语句。
  • 面向对象技术通过改善复用的方式来减少if else的使用。
  1. 面向过程中的封装是一维平面内的封装(只能使用函数进行封装),而面向对象中的封装是二维的(类和函数),因此结构可以更为清晰,相同的操作也更好找到,复用也更为简单。
  • 面向对象通过继承的方式实现了分支和复用,并且类是可扩展(通过继承和定义类函数),分支的条件判断作用范围远远大于面向过程中的封装,并且是可扩散的。面向过程中的条件判断是固定的,代码写好就固定死了。
  • 面向对象通过类继承实现的分支,因此需要一个条件定义一个继承类,导致类非常多,因此这其实是一个平衡,判断次数不多的条件可以不必要转换类定义。
  • 面向对象封装也能减少分支语句的使用,例如:在两个篮子里都取第五个物品,如果将两个篮子中的物品一一对应放在一个篮子里面,并且都是操作是一致的,这样就能够在一个篮子中一次性取出来。面向对象也是如此,将一定条件下的操作,封装成了类,操作就变为了对象的函数调用,也避免了条件判断。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值