10|面向接口编程(上):一切皆服务,服务基于协议
叶剑峰
该思维导图由 AI 生成,仅供参考
你好,我是轩脉刃。
在上一节课我们已经将 Gin 框架迁移到自己的 hade 框架中,但是如果 hade 框架只止步于 Gin 的已有功能:支持 Context、路由、中间件这些框架最简单的功能,显然背离了我们设计这个框架的初衷,毕竟我们的目标是搭建一个生产中可用且具有丰富功能模块的框架。
那么如何组织这些功能模块更好地协作,就是我们今天要讨论的问题。
组织的方法也很简单,之前提到过。如果你还记得我们第五课封装请求和返回结构的时候,先定义了 IRequest 和 IResponse 接口,再一一实现具体的函数方法,这种先接口后实现的方式,其实不仅仅是一种代码优化手段,更是一种编程思想:面向接口编程,这其实就是我们组织功能模块的核心思路。
面向接口编程
面向接口编程的思想到底是什么含义?我们从关键词“接口”开始思考。
不知道你考虑过这个问题没有,现在的高级语言,比如 PHP、Golang、Java 等,除了函数、对象等定义之外,都无一例外地拥有“接口”。但是为什么这些高级语言会需要有“接口”这个定义呢?我们从接口做到了什么的角度来反向思考。
抽象业务
首先,接口实现了对业务逻辑的抽象,设计接口就是抽象业务的过程。
因为在工作、生活中,我们需要把业务转换到代码中。但是一个真实的业务需求往往有很多复杂的描述,有些描述是某个业务特有的,而有些描述是所有同类型业务共有的,我们需要把描述的相同点抽象出来,成为一个个的步骤。而每个步骤实际上都是一个通过输入、产生输出的方法,把这些方法聚合起来,就是一个接口。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
面向接口编程是一种重要的编程思想,通过接口的抽象和实现,能更好地组织功能模块,实现业务逻辑的抽象和建模。本文深入探讨了面向接口编程的含义,强调了接口对业务逻辑的抽象和对具体实现的屏蔽。通过具体例子阐述了接口的优势,以及面向接口编程与面向对象编程、面向过程编程的区别。面向接口编程的思维方式更加抽象,使调用方对能力敏感,而对具体实现不敏感,从而提高了代码的灵活性和可维护性。文章通过对比分析,深入浅出地阐述了面向接口编程的重要性和优势,为读者提供了深入理解和应用该编程思想的指导。此外,还介绍了服务提供者的接口定义,包括获取服务凭证的能力、创建服务实例化方法的能力、获取服务实例化方法参数的能力,以及与实例化控制相关的方法。这些能力的设计符合面向接口编程的逻辑,为读者提供了清晰的思路和实践指导。文章强调了面向接口编程思想在框架设计、架构设计和微服务中的应用,鼓励读者在工作生活中思考并分享使用面向接口思想的实例。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 Web 框架》,新⼈⾸单¥59
《手把手带你写一个 Web 框架》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 友我敲 这就是laravel的设计 我曾几何时就思考过用go实现laravel的一些东西
作者回复: 嗯嗯
2021-12-071 - 友看到 service provider 就想起了laravel 确实是这样 之前对这个概念也是比较浅的,但是这波直接悟了
作者回复: 服务容器核心就是这样
2021-12-071 - 宙斯对服务提供者的理解: 服务和容器是框架对组件管理的方式,服务组件之间通过框架主体调用的。 框架提供标准(出具服务组件提供者接口),服务组件需要实现注册到框架主体的逻辑(服务组件注册方式和时机不同)。 分享:工作生活中有遇到使用面向接口思想? 业务场景:基于不同消息主题计算会员等级和福利和积分。 依据不同主题有不同计算规则,都会影响会员的等级,福利,积分的变更,可以抽象接口:分数计算,等级计算,福利计算,等级变更,福利变更,积分变更。
作者回复: 服务提供者就是一个桥梁,容器中某个服务由哪个实例来提供,完全由桥梁说了算
2021-10-24 - Geek_5244faLaravel 既视感。 好奇最后怎样在 handler 里获取服务,怎样实现依赖注入。2021-10-0825
- 党大量的接口化真的有意义么,很多接口一辈子也只有一个实现,根本不会有第二个实现了,为啥还要浪费时间去搞接口,直接拿来用不好么?2022-06-0733
- 🌿方法NewInstance和ServiceProvider.Register(Container) NewInstance 理解起来有点绕,希望老师可以在结尾提供一个注册服务的uml时序图,便于理解。2022-05-02
- 拾掇拾掇签到,学习了2021-10-08
收起评论