软件分层的思考

        程序设计的时候,经常是会做分层设计。有时候做分层,例如controller,service,dao,都成了一个习惯,也没有思考过为什么这么分层,更没有想过,除了这个分层之外,有什么其他分层实践。

       我们首先会想到一个问题,是什么导致了分层的出现?很直接的想法就是为了控制复杂度。分层其实就是一种分而治之的思想。那分层为什么就可以控制复杂度呢?人类的大脑在一个时间段内,能够关注的事件其实很少。换句话说,是人类的天生的生理属性导致了分层的出现。那为了控制大量复杂的代码,分层就是很自然的做法。

        第二问题,我们会想到,分层,应该如何分,有没有什么规律?分层的规律还是有的,其实就是一分为二的做法。最原始的分层,我觉得就是两层,一层是核心业务层,一层是支撑业务层。如果复杂度还是控制不下来,就继续按照一分为二拆分,拆分为核心的,次核心的。但是分层本身也会带来复杂度,所以分层也不应该太多,拆分太多层,反而会带来偶然复杂度,得不偿失。

         

        

你可能感兴趣的:(软件分层的思考)