diff --git a/README.md b/README.md
index 7514593..84ace39 100644
--- a/README.md
+++ b/README.md
@@ -109,7 +109,7 @@ Go tips from [Phuong Le](https://twitter.com/func25).
| 53 | | |
| 54 | | |
| 55 | | |
-| 56 | | |
+| 56 | Simplify interfaces and only ask for what you really need | cannian1 |
| 57 | | |
| 58 | | |
| 59 | | |
diff --git a/src/056.md b/src/056.md
new file mode 100644
index 0000000..6e04aa1
--- /dev/null
+++ b/src/056.md
@@ -0,0 +1,43 @@
+# Tip #56 简化接口并只要求你真正需要的东西
+
+> 原始链接:[Golang Tip #56: Simplify interfaces and only ask for what you really need](https://twitter.com/func25/status/1771187871032176691)
+
+在Go中定义接口时,请遵循以下技巧:
+
+1. 只有在实际需要时才定义接口。
+2. 接受接口并返回具体类型。
+3. 将接口放在它们被使用的地方(消费者),而不是它们被创建的地方(生产者)。([Tip #18](./018.md))
+
+技巧[3](#3) 实际上是基于技巧[1](#1)的。
+
+但是还有一个额外的技巧,让我们遵循"[2. 接受接口并返回具体类型。](#2)"
+
+你能在下面的例子中发现一个问题吗?
+
+![](./images/056/1.png)
+
+上述示例仅用于展示提示的目的,可能不符合最佳实践、命名规范等。
+
+问题是,LogUserDetails(…) 函数**仅仅**需要 GetUser 方法,而不需要 CreateUser 或 UpdateUser 方法。
+
+这种设置并不理想,因为它将函数与一个广泛的接口绑定在一起,这使得测试变得更加困难,降低了灵活性,并且可读性较差。
+
+
+接口有助于实现抽象,但是**接口越庞大,它就变得越不抽象**。
+
+> “为什么这对测试来说是不利的?”
+
+当我们进行测试时,我们不应该搞清楚输入接口的哪些方法被使用了,对吧?
+
+而且,设置一个我们不需要的庞大的 Mock 对象也很麻烦。
+
+那么,怎么做更好呢?
+
+你可能已经猜到了,我们的函数应该请求一个只有**它需要的东西**的接口:
+
+![](./images/056/2.png)
+
+
+任何符合 UserManager 的具体类型也同样应该符合 UserGetter。
+
+这个简单的改变使得代码更易于测试,也更清晰。
\ No newline at end of file
diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index 84c1b1f..aa364f1 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -21,6 +21,7 @@
- [Tip #44 有意地使用Must函数来停止程序](./044.md)
- [Tip #47 表驱动测试,测试集和并行运行测试](./047.md)
- [Tip #50 使结构体不可比较](./050.md)
+- [Tip #56 简化接口并只要求你真正需要的东西](./056.md)
- [Tip #60 sync.Once是执行单次操作的最佳方式](./060.md)
- [Tip #71 用泛型让 sync.Pool 类型安全](./071.md)
- [Tip #63 避免使用time.Sleep(),它不能被context感知且无法被中断](./063.md)
diff --git a/src/images/056/1.png b/src/images/056/1.png
new file mode 100644
index 0000000..6c14db3
Binary files /dev/null and b/src/images/056/1.png differ
diff --git a/src/images/056/2.png b/src/images/056/2.png
new file mode 100644
index 0000000..ed9c068
Binary files /dev/null and b/src/images/056/2.png differ