S单一职责原则
每个类只负责软件中的一个功能,并将该功能完全封装(隐藏)在该类中。
根据功能拆分类的代码,降低代码耦合度,提高可读性和复用性。
O开放封闭原则
实现新功能时能保持已有的代码不变。
所谓开放就是指可以创建子类并对其做任何事情,如新增方法或成员变量,重写基类行为等;封闭是指某个类已经做好充分的准备并可供其他类使用,即接口已经明确定义且以后不会修改。
参考策略模式、工厂模式。
L里式替换原则
子类应该保持与父类行为的兼容,重写方法时,应该对父类的行为进行拓展,而不是将其完全替换。
- 子类方法的参数类型应该是父类方法相匹配或更加抽象(父类参数类型的基类)
- 子类方法的返回值类型应该是是父类方法相匹配或者是其子类。
- 子类的方法不应该抛出基础方法预期之外的异常类型
- 子类不应该加强前置条件。(原先参数是int,子类要求负值就抛出异常)
- 子类不能削弱后置条件。
- 超类的不变量必须保留。
- 子类不能修改超累中私有变量的值。