程序设计原则

2023-03-21 16:11:27 浏览数 (1)

下面的各个原则所遵循的总原则是 “越抽象,越容易扩展”。

开闭原则

对扩展开放,对修改关闭。

比如原本存在 modify 的方法,如果有 modify&save 需求,按照开闭原则应该新增一个 modifyAndSave 的方法,而不是修改原来的modify。

该原则实际是要求 底层方法要功能单一。

里氏代换原则

子类可以扩展父类的功能,但不能修改父类原有的功能。

换言之,一个好的父类一定是最抽象和通用的,这样才能保证所有子类能从父类中扩展出来,而不修改父类。如果碰到新增子类需要修改父类的情况,说明该父类不够抽象。

该原则实际是要求 父类要足够抽象。

依赖倒转原则

抽象不应该依赖具体,具体可以依赖抽象。

比如 computer的抽象类应该依赖抽象的memory, harddisk类,而不依赖具体的KingtonMemory类。

该原则实际是要求 父类足够抽象。这要求父类依赖的类也足够抽象。

接口隔离原则

一个类对另一个类的依赖应该建立在最小的接口上。

比如 如果在 抽象的动物类 中定义了喝水的接口,如果存在一种 具体的动物 不喝水,那么具体动物继承抽象动物类时,将获得自己不需要的 喝水 的接口。

该原则实际是要求 父类足够抽象。这要求父类中定义的方法一定是最通用的,不存在一个方法不被其子类使用。

迪米特法则(最少知识原则)

如果两个实体之间无需直接通信,就不应该发生直接调用。

比如 明星的类不应依赖经纪公司,明星的类只应关心明星自身,经纪公司的类只应关注经纪公司自身。经纪人的类中将两者做连接。

该原则实际是要求 类要足够独立。这要求类依赖的其他类要尽可能少,在类的定义中只有与其自身有关的知识(最少知识)。

合成复用原则

尽量使用组合而非继承。

比如 车辆类中最好组合了颜色类(颜色作为车辆的成员),而不是继承车辆类,产生红色车,蓝色车的子类。

该原则实际是要求 ???

0 人点赞