设计模式
小于 1 分钟
设计模式
Go语言实现
代理模式
描述
- 实现了基本代理模式,和嵌套代理模式
import (
"log"
"testing"
)
func TestProxy(t *testing.T) {
p1 := &Proxy{}
p1.proxy = &Test{}
for i := 0; i < 2; i++ {
p2 := &Proxy{} //新的
p2.proxy = p1 //新的代理挂在旧的代理
p1 = p2 //新的替换原有的
}
p1.Invoke()
}
type A interface {
Invoke()
}
type Proxy struct {
proxy A
}
func (p *Proxy) Invoke() {
log.Println("代理之前")
p.proxy.Invoke()
log.Println("代理之后")
}
type Test struct {
}
func (t *Test) Invoke() {
log.Println("业务逻辑")
}