没有注意软件架构的代码,就像一间100平的房子,进去之后,没有卫生间、厨房的隔离,就是一间大房子,这间大房子就类似于单进程,房子里每个功能分区,就类似于进程中的各个线程,虽然功能都有,但是难免相互打扰。
在进行合理的软件架构设计之后,就像一间100平的房子,增加了几堵墙,几个门,隔离出来了厨房、卫生间、主卧、次卧、阳台。原先放在一间大房子里的用品,都要放到各个对应的房子。这就类似于多进程,每个进程占有了独立的空间和资源,各个进程之间通过IPC通信,类似于各个房间通过房门进出。IPC通信难免有用通信成本,就像是到厕所难免要开个门,开下灯之类的。
软件架构变化,表现在静态层面,是代码目录及存放位置的重新组织,正如大房间增加了厨房之后,要把原先的锅碗瓢盆放到厨房里,放到卧室多少就有些不合适了。
这是迄今为止,我对软件架构比喻的很贴切的例子。