代理模式
此开源图书由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)
}
最后更新于
这有帮助吗?