MVC和分层体系的区别
很多程序员来面试,简单问了下MVC和分层体系有那些区别,很少有程序员回答的上来,包括一些工作5、6年的老程序员。
如今都是用框架的世界,如今的程序员一上手全是SSH/SSI什么的,哪里还会用原始的jsp和servlet。没有一定的基础开发实践,直接接触框架,根本无法理解框架存在的意义。
strtus是一个mvc的框架,它体现了mvc的种种思想,但是在分层体系中它只担任视图层,spring等工具担任逻辑层,hibernate、ibatis等orm担任数据模型层。
说到MVC和分层体系的区别上来,就要深入了解所谓的服务框架的边界问题,对于一个系统的设计,怎么对其进行分层,进行边界控制,就是考验一个程序员是否主动思考、是否是个有思想的程序员的时候。
control层把各种业务逻辑、权限判断写在一起的事情非常常见,而逻辑层只是简单的一句dao.save(),这样的代码何必要区别逻辑层呢?甚至何必要dao层呢。这个就是根本不理解分层体系的重要才导致的问题。
分层体系主要是为了系统的扩展性和前瞻性存在的,体系了java思想中的开闭原则,对外开放,允许业务方面进行适当的弹性修改,对内关闭,不允许由于外部业务改变大量影响内部变化。它利于我们进行个针对性的单元测试,每个测试实例只关注自己的层面,利于系统的健壮。它是java的一系列设计模式的体现,是设计模式上的升华。
其他不说了,简单说说罢了。这些都应该程序员写程序的时候要多多思考的。
程序员存在的更多的应该是思考,而非编码。我们做不到google他们的80%思考,20%代码,但我们也要尽量的多思考。