这里是一篇比较全面的概览http://blog.csdn.net/yaca/article/details/6158175
个人比较注重:开闭原则(对扩展开发对修改关闭)
变与不变的分离(将变化的部分和不变的部分分开)
组合/聚合复用原则(尽量使用类的组合复用,不要使用继承)
还有即使高内聚低耦合
实际上著名的GoF模式也不尽都对这些原则遵循的很好,如访问者模型,将原被访问者的部分内部逻辑分离出去,
实际上是违背高内聚低耦合标准的。但,对于程序的扩展确实很有帮助。怎么组合这些设计原则和设计模式,需要
很多代码量的磨练。