下面我会把读书过程中接触到的原则性的内容,逐一列在下面,供回顾与共享。
1、找出应用中可能需要变化之处,并把它们和不需要变化的代码区分开来
关于这个原则,有两点需要注意:
1)如何找出需要变化之处?
我的答案是,在项目开发过程中,用户需求通常不会一成不变,大多数情况下都会有需求的迭代过程。在需求变更的过程中很容易就发现我们经常需要根据这些需求而改动一部分代码。仔细分析这一部分需求,以及应用/系统的实现,我们就可以找到代码中变化较多的部分。这是从需求方面来理解;
如果是做产品开发又会怎样呢?看起来产品的开发没有一个明确的用户,需求的变动往往来源于公司的其他部门(市场分析部门);或者干脆需求变更来源于开发部门本身,比如整合产品到公司的平台中去等等。这些情况其实与项目开发的处理类似;经验丰富些的高级程序员往往在接到需求说明书的时候,就能够隐隐把握到其中容易变化的需求。在实现中,采用合适的系统架构和设计模式,往往可以节省大量的后期改动工作量。
2)如何把这两类代码区分开来呢?
2、针对接口编程,而不是针对实现编程
3、为了交互对象之间的松耦合设计而努力
参考“观察者模式”的思想和实现