经过这么多年的工作, 我发现加层似乎是一个万能的解题钥匙。
在解决复杂问题上,最好的通用的解决方案似乎是 加层。
例如在软件架构方面,为了解决数据库切换问题,于是加了DAL层。
例如在软件架构方面,为了解决某种不确定性可以加一个接口层,
例如在软件架构方面,为了解决日后需求变更, 加一层接口层。
例如在编译器设计中,为了解决CPU各种各样指令各种各样, 于是人为的加了一层虚拟机。例如Java虚拟机, .net虚拟机 ,早期的编译器也是通过生成到中间代码这一层后续再处理做到的适配各种CPU。

例如在操作系统架构方面,为了解决各种各样的硬件接口, 于是加了一层虚拟硬件接口 USB。

甚至是在算法上,加层也能解决很多难解的问题, 很多看似无法解的问题,都能通过映射到更高的维度进行求解。例如图像识别,会做各种提高维度的工作。 在数据处理和分类上,在低纬度无法分类的数据经过投射到更高层就神奇般的能分类了。

也许你会说,加层带来了系统性能的降低,是依牺牲性能为代价的。
但是在性能提高上也可以通过加层提高速度。 例如词法分析中有限自动状态机,通过抽象出状态层,大大的提高了词法分析的速度。

加层似乎成了一种万能的方案, 加层所带来的的好处实在是太多了。太方便了。
就连最牛逼的神经网络 也是通过不断的提高层数,能力也越来越强。

那么加层是否就是万能的钥匙呢?

我感觉只要在资源足够的情况下,
加层似乎能解决各种各样的问题

欢迎探讨.