面向接口,面向接口,面向接口

接口很多时候听起来很有道理,写的时候会质疑是不是为了接口而接口。一写二抄三重构,前面没有必要的时候不用接口,后面重复的时候可以引入接口。 现象 接口很多时候听起来很有道理,写的时候会质疑是不是为了接口而接口。 实际上,一写二抄三重构: 前面没有必要的时候,不用接口; 后面重复的时候,可以引入接口; 二次重复的时候,就必须要重构了,引入接口是其中一种。 接口作用很大 def disk_build: if PitrixFolder.is_tps_container(): image_name = ctx.tpsc_mgr.get_head_img(instance_id) else: image_name = PitrixFolder.get_head_img(instance_id) 就像存储,存储有多种,我们遍地的 if else,太难维护了,扩展性很差。 这个时候,如果我们用的是接口: 那么所有类似 disk_build 的地方,参数都是接口; disk_build 内没有条件判断,只有接口调用; 而调用 disk_build 的时候传入具体的存储类型; 大量的 disk_build,就避免了大量的条件判断。 条件判断不是问题,重复判断才是问题。 而接口,也可以方便的扩展存储,因为不用去调整大量的 disk_build 函数,只需要在调用 disk_build 的地方传入新的类型。 接口不是完全避免了新引入类型的工作量,入口处还需要处理,但是依然保证了内部核心流程的稳定性,因为入口处肯定不是核心流程嘛。 小结 面向接口,一写二抄三重构; 前面没有必要的时候不用接口,后面重复的时候可以引入接口; 二次重复的时候,就必须要重构了; 条件判断不是问题,重复判断才是问题; 接口保证内部核心流程的稳定性,入口处处理新类型即可。

March 8, 2026 · 1 min · 46 words · 文叨叨