1.开闭原则(open-closed principle)
模块、方法和类应该对扩展开放,对修改封闭。换言之,软件应该设计成不加修改原有代码就能扩展功能。
2.背景设计原则
依赖倒置原则(dependency inversion principle, DIP)
起背后的理念是应该在设计细节之前先创建总体概念。高层模块不应该依赖底层模块。相反,它们都应该依赖于抽象。
Liskov替换原则
一个从积累派生的类应该支持基类的所有行为。
3.封装变化原则
模式并非只能封装变化,它们还有助于找到对象之间的关系。
4.理性怀疑原则
小心过分依赖模式。概念层次的模式和模型都是真理的抽象。它们是以往经验和教训的结晶。使用它们来帮助我们思考摆在我们面前的问题。
“适合”某个问题的模式就在问题中,而不是强加在问题之上。
试图确定并适应所有可能的变化通常并不能获得更好的系统,这样往往会一事无成。这就是所谓的分析瘫痪(paralysis by aralysis)
抽象类与接口
抽象类和接口的表面区别:抽象类允许有公共的状态和行为。
抽象类和接口在设计层次上的区别:
抽象类可以看成是一种聚集相关实体的方式。其关注点是如何设计这些具体的实体(派生类),从而可以以同样的方式使用它们。
接口的关注点是要使用这些派生/实现的对象。也就是说,服务对象应该有什么样的接口,才能最好地服务于背景/控制对象?
阅读(1924) | 评论(0) | 转发(0) |