对扩展开放,对修改关闭
提高软件的可用性和可维护性
高层模块不应该依赖低层模块,两者都应该依赖其抽象
针对接口编程,不应该依赖实现编程
所有引用基类的地方都必须能透明的使用其子类对象
代码共享,提高代码的可用性
提高代码的可扩展性
提高产品或者项目的开放性
不要存在多于一个导致类变更的原因
降低类的复杂度、提高类的可读性
降低变更引起的风险、提高系统的可维护性
客户端不应该依赖其他不需要的接口,类之间的依赖关系应该建立在最小的接口上
接口尽量要小,不要出现臃肿的接口
接口要高内聚
只提供需要访问的方法
一个对象应该对其他对象有最少的了解
一个类只和朋友交流,不和陌生类交流,方法尽量不引入类中不存在的对象
在工作中用的比较多的模式(个人认为):
创建型
-
工厂方法
-
抽象工厂
-
建造者模式
-
单例模式
结构型
-
适配器
-
装饰者
-
代理模式
-
外观
-
组合
行为型
-
模板方法
-
策略模式
-
责任链
-
状态模式
如有问题,请指出,谢谢~