软件开发的一个不变真理:变化
不管当初软件设计得多好,一段时间之后,总是需要成长与改变,否则软件就会”死亡“
设计原则1
- 找出应用中可能需要变化指出,把它们独立出来,不要和那些不需要变化的代码混在一起
把会变化的部分取出并封装起来,好让其他部分不会受到影响。结果如何?代码变化引起的不经意后果变少,系统变得更有弹性!
设计原则2
- 针对接口编程,而不是针对实现编程。
针对接口编程真正的意思是”针对超类型编程“,更可以明确的说成”变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量。这也意味着,声明类时不用理会以后执行时的真正对象类型!”
设计原则3
- 优先使用组合而不是继承
使用组合创建系统给了你更大的弹性。不仅是让你把一个算法家族封装进他们自己的一组类,而且让你在运行时改变行为,只要组合的对象实现正确的行为接口。
策略模式
定义了一个算法族,分别封装起来,是的他们之间可以相互转换。策略让算法的变法独立于使用它的客户