工作感受杂谈

2016年3月3日 简单记录下自己这几年的工作感受

    最近刚刚换了一份工作,在找工作期间参加了很多公司的面试,由于我个人的表述能力较强,收到了多家公司的offer,但是面试中最突出的问题就是我的技术细节不够,以至于我在面试时要么如实回答并没有过某种技术的开发经验,要么依靠其他方式避开问题。
    在参加一家公司的笔试的时候,遇到的大多都是基础题,其中最常见的莫过于 抽象类和接口 的区别,这个问题其实大多数的开发人员肯定都知道,我也仔细研究过,但是笔试的时候还是没有很好的回答出这个问题。于是回家之后我又一次的对这它们进行了学习,虽然掌握了基本原理,但是还是没有考虑出抽象类的应用场景。于是我便查看了以前所做过的所有企业级管理项目,最后发现,几乎清一色的使用接口而非抽象类,这大概就是我虽然反复学习抽象类的原理,但无法真正记住的原因。因为在企业级的应用里,对象一般直接对应数据库里的业务表,属性几乎与表的字典保持一致,而表的设计通常没有太多的关联性,所以没有需要抽象到父类里的属性或者方法,即使有公共部分也不会使用抽象类。在加上企业级的系统后台都是采用MVC,在Controller层中,又通常分化为Action层,Service层和DAO层,其中Action层主要处理由前台传递到后台的参数,并根据业务需求调用Service层,而真正处理业务逻辑的就是Service层,最后当有了处理结果需要进行数据库的CURD操作时,才调用DAO层。所以通过这种形式的开发来看,抽象类似乎没有存在的必要,因为Action、Service和DAO之间的调用始终是通过注入接口实现的,这样就导致了抽象类几乎不会被使用的问题。但是作为业务逻辑最复杂的Service层,可能存在的是大规模的面向过程式的编程,大函数,大对象可能随处可见。因此在这一层是有应用抽象类的可能的,也是最应该实现面向对象编程的部分。

你可能感兴趣的:(编程,工作)