很多年以前,手持ASM/C/C++屠龙大刀,我就认为其实没什么写不出来的程序,只要世界上有人能写出来,我也一定可以;但是又怎样?写出来不代表好维护,好修改,好重用,于是我们考虑面向对象,设计模式等等,其实目的就是为了抽象,把复杂的编程模型抽象成容易理解和维护的简单模型,但是抽象的同时也要牺牲很多的东西,特别是效率,于是,我们妥协,在抽象的完美思维和丑陋的现实之间进行妥协,最后,妥协到抽象得不至于丑陋,效率客户还能接受... 就有了架构;
我们解决问题的种类有很多种,我们抽象的方法也有很多种,所以,架构也应该有很多种,一个企图解决全部问题的架构必然是什么问题也解决不了,而解决的问题面过小的架构也往往没有足够的市场存活,我们依然需要妥协,在解决问题面的大小上妥协;