OOP七大原则
单一职责原则
控制类的粒度大小,将对象解耦,提高内聚性
一个对象应该只包含单一的职责,并且该职责被完整地封装到一个类里
开闭原则
对扩展开放,对修改关闭
即实现在不修改源代码的情况下改变这个模块的行为
核心:对系统进行抽象化,并从抽象化导出具体化
里氏替换原则
继承必须确保超类所拥有的性质在子类中仍然成了成立
任何基类可以出现的地方,子类一定可以出现。
- 子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法。
- 子类中可以增加自己特有的方法。
- 当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)、要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
依赖倒置原则
面向接口编程,不要面向实现编程
接口隔离原则
要为各个类建立它们需要的接口
使用多个专门的接口来取代一个统一的接口
合成复用原则
尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现
迪米特法则
只与你的直接朋友交谈,不跟“陌生人”说话
一个软件实体对其他实体的引用越少越好,或者说如果两个类就不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互