面对对象6大原则

面对对象6大原则

综述

  1. 单一职责原则
  2. 开闭原则
  3. 里氏替换原则
  4. 依赖倒置原则
  5. 接口隔离原则 以上5原则也被统称为SOLID原则
  6. 迪米特原则

单一职责原则

尽量保证同一类中函数职责相近,根据经验判断。

开闭原则

软件中的类、函数、模块应该对于拓展是开放的,但是对于修改是封闭的。修改的时候尽量通过拓展方式来修改,例如接口、继承这种抽象方式

里氏替换原则

所有引用基类的地方必须能够透明的使用其子类对象

例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//窗口类
public void Window{
    public void show(View child){

    }
}

public abstract class View{
    public abstarct void draw();
    public void measure(int width,int height){
        //测量视图大小
    }
}

//文本控件类实现
public void TextView extends View{
    public void show(){
        //绘制文本
    }
}

//ImageView类实现
public void ImageView extends View{
    public void show(){
        //绘制图像
    }
}

优点:

  1. 代码重用,减少创建类的成本,每个子类有拥有父类的方法和属性
  2. 子类和父类相似,但是又有不同点
  3. 提高代码可拓展性

缺点:

  1. 继承是侵入性的,只要继承就必须拥有父类的方法和属性
  2. 可能造成子类代码的冗余、灵活性降低,因为子类拥有父类的方法和属性

依赖倒置原则

模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的。

接口隔离原则

客户端不应依赖他不需要的接口。

类间的依赖关系应该建立在最小的接口上。

将非常庞大的、臃肿的接口拆分成更小或者更具体的接口,解开系统耦合,从而容易重构、更改和重新部署

迪米特原则

一个对象一个应该对其他对象有最少的了解。

通俗的将,一个类应该对自己需要耦合或调用的类知道的最少,类的内部如何实现与调用者或者依赖者没关系,调用者或者依赖者只需要知道它需要的方法即可,其他的一律不用管。类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。