下面的各个原则所遵循的总原则是 “越抽象,越容易扩展”。
对扩展开放,对修改关闭。
比如原本存在 modify 的方法,如果有 modify&save 需求,按照开闭原则应该新增一个 modifyAndSave 的方法,而不是修改原来的modify。
该原则实际是要求 底层方法要功能单一。
子类可以扩展父类的功能,但不能修改父类原有的功能。
换言之,一个好的父类一定是最抽象和通用的,这样才能保证所有子类能从父类中扩展出来,而不修改父类。如果碰到新增子类需要修改父类的情况,说明该父类不够抽象。
该原则实际是要求 父类要足够抽象。
抽象不应该依赖具体,具体可以依赖抽象。
比如 computer的抽象类应该依赖抽象的memory, harddisk类,而不依赖具体的KingtonMemory类。
该原则实际是要求 父类足够抽象。这要求父类依赖的类也足够抽象。
一个类对另一个类的依赖应该建立在最小的接口上。
比如 如果在 抽象的动物类 中定义了喝水的接口,如果存在一种 具体的动物 不喝水,那么具体动物继承抽象动物类时,将获得自己不需要的 喝水 的接口。
该原则实际是要求 父类足够抽象。这要求父类中定义的方法一定是最通用的,不存在一个方法不被其子类使用。
如果两个实体之间无需直接通信,就不应该发生直接调用。
比如 明星的类不应依赖经纪公司,明星的类只应关心明星自身,经纪公司的类只应关注经纪公司自身。经纪人的类中将两者做连接。
该原则实际是要求 类要足够独立。这要求类依赖的其他类要尽可能少,在类的定义中只有与其自身有关的知识(最少知识)。
尽量使用组合而非继承。
比如 车辆类中最好组合了颜色类(颜色作为车辆的成员),而不是继承车辆类,产生红色车,蓝色车的子类。
该原则实际是要求 ???
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。