代理模式

此开源图书由ithaiq原创,创作不易转载请注明出处

该模式和装饰器模式很像,但语义不一样。代理模式是控制函数执行的前置和后置条件,而装饰器模式着重在于突出扩展功能

type Subject interface {
	Do()
}

type RealSubject struct{}

func (impl RealSubject) Do() {
	fmt.Println("do something")
}

// SubjectProxy 静态代理类
type SubjectProxy struct {
	subject RealSubject
}

// Do 也实现了Subject接口
func (proxy SubjectProxy) Do() {
	// 前置触发,一般会是一些条件控制什么的
	fmt.Println("proxy before")
	proxy.subject.Do()
	// 后置触发
	fmt.Println("proxy after")
}

func NewProxySubject() Subject {
	return new(SubjectProxy)
}

最后更新于

这有帮助吗?