为什么要集中?因为软件经常需要修改,而集中便于修改。
举例来说明:
1.魔术数字,也就是一些孤立的数字,不能直观看出有什么意义的数字。这种数字可以用常量来代替,任何重复使用到的地方,都可以用这个常量来代替,如果你需要修改这个数值,那么只需要修改常量的定义就可以了,而不需要多处修改。
2.函数把算法集中在一块了。你可以在每次用到该算法的时候,都直接写代码(或者复制过来),但是如果你用函数去代替,那么当改进算法质量的时候,任何用到该算法的地方,都能同时得到改善。
3.对象把算法和状态集中在一块了。根据状态机理论,程序的实质就是从一个状态跳转到另外的一个状态,而对象很好的实践了这个理论。如果状态和对象各处一方,修改的时候就要到处找了。
另外说说设计上的事情。
硬编码是设计者需要避免的,所谓的硬编码,就是不易于修改的状态。因此集中原则是对付这种状态的其中一个好方法。
如何才能彻底的解决硬编码问题,第一个是把每一个潜在的修改点独立隔离起来,也就是把功能点集中起来。各个功能点之间不应该相互牵涉,避免牵一发而动全身之虞。第二点,从框架上,高层面上,提供一个良好的扩展界面。
又可以说,先从低层次上把功能点分离了,再从高层次上把功能点衔接起来形成一个系统。
可见:
第一点是功能点的集中。
第二点是业务的集中。
这样就能做到修改方便,解决硬编码的问题。这里只是两个层次的抽象,可以设想一个足够复杂的系统,可以抽象到三层以上,但是总的策略是不变的,底层各部分的分离,在高层再融合起来。