前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2022-09-22 接口隔离与迪米特

2022-09-22 接口隔离与迪米特

作者头像
三流之路
发布2022-09-30 08:55:51
1630
发布2022-09-30 08:55:51
举报
文章被收录于专栏:三流程序员的挣扎

第 4 章接口隔离原则,前面都写英文名的,这章不写了,有点破坏美感,所以我网上查了一下,叫 Interface Segregation Principle(ISP)。

关键点就是接口要尽量简单,方法尽量少。和单一职责不同,单一职责说的是一个类或接口负责一个职责,但一个职责可能包括许多方法。

比如项目经理 PM 接口,作为 PM 既要激励成员,又要向上层汇报,即要跟踪进度,还要控制预算等等,这些可以看作不同的职责,分成更细的接口,而不是都用一个统一的 PM,因为可能有些小项目有些职责不需要负责。

但就是激励成员这一个职责,可能有组织团建方法,发红包方法,和成员谈心方法、惩罚方法等等,从单一职责看没问题,从接口隔离可能就有问题。可以正向激励方法放一个接口,负向的放另一个接口,因为有的项目经理只惩罚不奖励,有的项目经理只奖励不惩罚,有的项目经理两者都有,这样接口拆开,实现更为灵活。

第 5 章迪米特法则,Law of Demeter(LoD),也叫 最少知识原则,Least Knowledge Principle(LKP),说是来源于一个叫做“迪米特”的项目。

  1. 两个类没有直接联系,那就不要调用,书中举的例子看着就别扭,因为它是故意造了个错误的写法。A 类用到了 B 类,B 类需要用到 C 类,错误的例子是 A 类中构建了 C 类,传给 B 类。不清楚项目中是否会不经意用了这种错误的方法,但现在看是不会这么去写的
  2. 即便是有耦合关系的朋友,比如 A 和 B,也不要过于紧密,A 调用 B 的方法越多耦合越高,可能 B 的修改越容易引起 A 的修改,将 A 要调用的逻辑在 B 中封装,暴露的方法变少
  3. 如果一个方法放在自己的类里和放在其它类里都可以,如果放在本类中不增加类间关系,不产生负面影响,就放在自己的类里,倒也好理解,不过暂时没想出场景
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档