在我们做软件架构的时候,设计要支持变化,这一点相当重要,往往我们在设计软件的时候,没有充分考虑这一点,造成软件做好后,当需求稍微变化的时候,软件就是修改,甚至要推倒重来,这样的软件的稳定性和可扩展性都是比较差的;一个不考虑系统变化的设计在将来就有可能需要重新设计,这些变化有可能是类的重新定义和实现,重新设计的结果是很悲剧的,往往会错过商机,最终项目会以失败而告终。
举例:上位机和下位机通信时,需要考虑:
1)在通信协议上,充分考虑可能的变化,设计的结构体一定要有保留字节;
2)在设计协议时,一定要有协议的类型,这样一旦协议不能在支持扩展时,可以定义新的接口,这个时候就可以根据协议的类型来做到向前兼容,你定义的协议也是向后兼容的;
3)定义通信协议时,要考虑可扩展性,协议最好做成变长的可扩展的,这样当接口变化时,通信协议不要变化,这样可以使得设计的协议扩展性较好。