开闭原则
软件实体在扩展性方面应该是开放的,而在更改性方面应该是封闭的。
Liskov替换原则
子类可以扩展父类的功能,但不能改变父类原有的功能。
为了满足Liskov替换原则,设计时要求:
- 子类中方法的前置条件(形参)不能强于父类中相应方法的前置条件。
- 子类中方法的后置条件(返回值)不能弱于父类中相应方法的后置条件。
Liskov替换原则要求子类宽入严出。把一个基类对象转换成它的子类对象,程序将不会产生任何错误和异常。
子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法
子类中可以增加自己特有的方法
依赖倒置原则
依赖倒置原则指的是依赖关系应该是尽量依赖接口(或抽象类) ,而不是依赖于具体类。
接口分离原则
在设计时采用多个和特定客户类(client)有关的接口要比采用一个通用的接口要好。