GraphQL 多态类型设计:Interface 与 Union 深度实践
GraphQL 多态类型设计实战:interface 与 union 的区别与选型、多态 schema 建模(共同字段抽象/鉴别字段)、inline fragment 与 __typename 的消费模式、多态查询的性能与 N+1、多态类型的 mutation 设计、接口演进与破坏性变更、union/interface 在真实业务(消息流/支付/内容类型)中的应用,以及多态与 Federation 的组合实践。
tag
GraphQL 多态类型设计实战:interface 与 union 的区别与选型、多态 schema 建模(共同字段抽象/鉴别字段)、inline fragment 与 __typename 的消费模式、多态查询的性能与 N+1、多态类型的 mutation 设计、接口演进与破坏性变更、union/interface 在真实业务(消息流/支付/内容类型)中的应用,以及多态与 Federation 的组合实践。
GraphQL Schema 设计进阶实践:interface/union 抽象建模、input/oneOf 输入对象设计、命名与弃用策略、Relay 连接规范、null vs error 可空性策略、SDL 模块化组织与 codegen 类型安全生成。
本节从「如何描述一个对象长什么样」这个问题出发,系统讲解 interface 的定义方式与核心能力:必填属性、可选属性、只读属性、方法签名、索引签名以及接口继承。读者将学会用 interface 为真实业务对象建模,理解 excess property check 的触发时机,并掌握常见报错的定位思路。读完本节,你能为 API 响应、配置项、组件 props 等结构化数据写出清晰的类型契约。
系统讲解 Go 接口的设计哲学与工程实践,涵盖小接口大组合思想、隐式实现机制(鸭子类型)、iface/eface 底层数据结构、类型断言与类型切换、io 包接口家族解剖、企业级日志与分层存储实战、编译时静态检查技巧、空接口 any 的演进、接口与泛型的选择策略、依赖注入与 DIP 原则实现、常用反模式与性能分析。
很多初学者一听到”单元测试”,就想到 mock 框架。其实 Go 里最常用、最舒服的测试替身,往往只是一个小结构体。你定义一个刚好够用的小接口,测试里手写 fake 或 spy,就能验证业务逻辑,而不用真的发邮件、调支付或连外部 API。
接口不是为了“面向对象”,而是为了边界 很多人第一次看到 Go 接口,会下意识把它和 Java、PHP 或 TypeScript 的接口放在一起理解。它们确实都能描述一组方法,但 Go 接口最特别的地方是隐式实现:一个类型不需要声明自己实现了某个接口,只要方法集匹配,就自动满足接口。