跳至主要內容

设计模式

LiCheng小于 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("业务逻辑")
}