- 单一职责原则
- 类层面:一个类只负责一个职责,这是为了避免如果一个类负责多个职责,对其中一个职责的相关代码进行改动,其他职责的代码可能会受到影响。所以,理解类的单一职责原则就是如果对这个类进行改动,那么这个类都会收到影响,这种影响是正常的,无可厚非的。
- 方法层面:参数对于方法体是纯粹的,不需要额外对方法进行分范围分别处理。
- 接口隔离原则
- 场景:类X有一个成员变量A,类Y有一个成员变量A,但是X只需要用到A里的a,b,c方法, Y只需要用到A里的a,d,e方法
- 做法:应该让A分别实现两个接口D,E这两个接口分别用b,c和d,e方法。 G有a方法,E和F继承G, 然后把类X持有A改成持有D,Y改为持有E
- 原因:这样子X中就没有办法通过D.d 调用到它不需要的方法,Y也是,从而降低了X,Y和A之间的耦合度
- 好处:如果A只实现了一个接口,没有进行拆分,那么以后继承这个接口的其他类也需要实现所有方法,不管它的客户端需不需要
- X只知道D, Y只知道E,可以让服务端(也就是A和实现的各个接口)尽量减少与外界的耦合度,知道得越少,以后改起来得越容易
- 依赖倒转原则
- 高层对底层得依赖应该是依赖其接口,而不是具体实现。底层代码对高层代码应该是通过接口提供,而不是具体实现。简而言之就是controller层不要直接持有service的实现类,而是持有其接口
- 原因:
- 如果以后要换实现的话,可以在注入的地方改动一处就好了,而不用到处改
- 如果实现类的访问权限改动的话,只要和接口的关系没有改动,那么引用这个接口的地方就不用改,否则又得到处改
- 里氏替换原则
- 尽量不要重写父类中的方法,使用的地方人家可能见过父类,但是没有见过你这个新写的子类,对于同一个方法,很有可能人家就会当作父类那样子去用,如果新的类方法实现改了,既有可能导致人家用错了
- 如果人家的方法你都不想要,那么还实现它干啥呢(灵魂拷问)
- 开闭原则
- 如果你的代码是给别人用的,那么最好你代码扩展(也即是改动)对别人来说是没有影响的,最好是人家原来怎么用,你改了之后人家还是可以那样子用
- 开:对服务端改动是开放的 闭:对客户端改动是关闭的
面向对象原则理解
最新推荐文章于 2023-08-04 07:33:08 发布