开闭原则:模块、方法和类应该对扩展开放,对修改封闭。也就是说,应该将软件设计得不对其修改就能扩展功能。 开闭原则本质上意味着将软件设计成为新功能能够作为单独的模块加入系统,这样就尽量降低了集成成本。
完全遵守开闭原则几乎是不可能的,但是它可以作为一个目标,指引正确的方向。代码越遵守这一原则,以后适应新(而且可能是无法预测的)需求就越轻松。
依赖倒置原则:
1、高层模块不应该依赖于底层模块,高层模块和底层模块都应该依赖抽象;
2、抽象不应该依赖于细节,细节应该依赖于抽象;
这一原则隐含着使用对象和被使用对象之间只能再概念层次存在耦合,而非实现层次。
CVA(Commonality and Variability Analysis)方式:
1、先寻找共性;
2、从这些共性创造抽象;
3、从共性的变化寻找派生;
4、看共性之间的关系如何。
CVA 与从背景设计是相辅相成的。CVA 强调尽早关注抽象,这样更可能找到最有用的抽象,设计模式关注这些抽象之间的关系,但是对找出最重要的抽象帮助不大。从另一方面来说,设计模式可以使我们利用来自过去成功设计的真知灼见,而 CVA 做不到这一点。
CVA 是另一种形式的从背景设计。类的接口是再其他抽象如何使用这些类的背景中定义的。两者方法中的类定义是类似的,因为 CVA 只是另外一个寻找变化,并用高内聚、松耦合的类封装(设计模式的基础原则)的方式。所以相同的原则和方法会得到非常类似的解决方案。