mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
update
This commit is contained in:
parent
94f0fcc436
commit
fa11c50d5a
@ -8,4 +8,13 @@
|
||||
|
||||

|
||||
|
||||
简单地来说,通过在业务逻辑层定义 interface 来对业务逻辑进行一定的保护。这样在周边的代码发生变动时,不会对业务逻辑产生任何影响。比较典型的应用,例如你们公司的服务原来是 C/S 架构,在 web 2.0 时代突然流行起了 B/S 架构,然后在移动互联网的浪潮下又开始流行 C/S 或者一些 hybrid app 架构,但是这些变化对于后端程序来说,大多数的代码应该能够做到置身事外。再比如你们公司之前因为技术实力限制,没有适合自己用的可以持久化的 kv 存储。
|
||||
上面这张图比较典型。 简单地来说,我们在 Business Rules 这一层定义了一些 interface,例如我们需要对数据进行存储,那么就有可能定义下面这样的接口:
|
||||
|
||||
```go
|
||||
type RecordStore interface {
|
||||
func Save(r MyRecord) error
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
通过在业务逻辑层定义 interface 来对业务逻辑进行一定的保护。这样在周边的代码发生变动时,不会对业务逻辑产生任何影响。比较典型的应用,例如你们公司的服务原来是 C/S 架构,在 web 2.0 时代突然流行起了 B/S 架构,然后在移动互联网的浪潮下又开始流行 C/S 或者一些 hybrid app 架构,但是这些变化对于后端程序来说,大多数的代码应该能够做到置身事外。再比如你们公司之前因为技术实力限制,没有适合自己用的可以持久化的 kv 存储。
|
||||
|
Loading…
x
Reference in New Issue
Block a user