1.高层模块不应该依赖底层模块,两个都应该依赖抽象 2.抽象不应该依赖细节,细节应该依赖抽象
子类型必须能够替换掉他们的父类型,只有当子类可以调换掉父类,软件单位的功能不受到影响时,父类才能真正的被复用,而子类也能够在父类的基础上增加新的行为!