? ? ? ? 一个类只负责单一功能领域中的相应职责。
? ? ? ? 一个软件实体应当对扩展开放,对修改关闭。即软件实体应当尽量在不修改原有代码的情况下进行扩展。
? ? ? ? 所有引用基类的地方必须能透明地使用其子类的对象。即在软件中将一个基类对象替换成其子类对象,程序不会产生任何错误和异常。
? ? ? ? 抽象不应该依赖于细节,细节应该依赖于抽象。即要针对接口编程,而不是针对实现编程。在程序代码中传递参数时或关联关系时,尽量引用层次高的抽象层类(基类)。
? ? ? ? 使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
? ? ? ? 尽量使用对象组合,而不是继承来达到复用的目的。
? ? ? ? 一个软件实体应尽可能少地与其他实体发生相互作用。