“ J2EE教给我最多的就是软件分层设计实现的思想,但这也是影响我编程思路的一个羁绊。2013年转投到互联网开发领域,我冒险选择了JFinal这个刚刚初出茅庐的国产框架,舍弃了当时如火中天的SSH。在JFinal使用的过程中,逐步淡化分层的概念,只把核心的、被抽象、被复用的部分提炼到我们自己设计的service层上。今天再翻看10年前写的这篇文章,依然是表达了我对程序设计的一些想法,那就是我们不能为了分层而分层,也不能为了设计而设计,程序设计一定要围绕有益的结果和目的,每个设计思想都有它追求的东西,自然也有它要放弃的东西,知道我们最想要什么才是最重要 ”
在Java EE的开发中,我们一直强调分层,什么MVC三层体系,N层架构,好像只有分的层越多,系统就越完美,才能体现出现代软件工程的优点。最近一直在思考,我们为什么要分层?分层的意义何在?怎样去组织各个层次的关系?
分层的好处就在于代码清晰,结构分明,有利于修改、维护和复用,这已经成为大家分层的一个最有说服力的原因。但是也并不是任何系统都要分层设计,简单的系统,可以选择较少的层,否则影响开发效率和系统运行的效率。特别在需求不断更新和未知的web开发中,分层也并不能给我们带来多少实质性的好处,反而增加的复杂度而不能及时响应需求。
但在大型的企业级开发中,我们通常要进行分层设计,而表现