All problems in computer science can be solved by another level of indirection .
-- David Wheeler
计算机科学中的任何问题,都可以通过加上一层逻辑层来解决。
-- David Wheeler
在计算机领域,“分层” 概念无处不在。比如 web 开发时的 MVC ,网络编程时的 OSI 参考模型和 TCP/IP 协议族。
但是为什么要进行分层呢?
《图解TCP/IP》:
在这一模型中,每个分层都接收它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”。
而Marting Fowler《企业应用架构模式》开篇第 1 章是这样说的:
在分解复杂的软件系统时,软件设计者用得最多的技术之一就是分层。
在第 1 章后面,又举了一个表现层,领域层,数据源层的例子。
Eric Evans的《领域驱动设计》(DDD):将业务语义显现化,把原先晦涩难懂的业务算法逻辑,通过领域对象(Domain Object),统一语言(Ubiquitous Language)将领域概念清晰的显性化表达出来。
相信我,这种表达带来的代码可读性的提升,会让接手你代码的人对你心怀感恩的。借用Abelson的一句话