09、 Golang 设计模式:09_代理模式
1、介绍
为其他对象提供一种代理以控制对这个对象的访问。
Subjec:主体,Proxy:代理人,RealSubject:实际的主体。
2、示例
示例代码:
package main
import "fmt"
type Subject interface {
Do() string
}
type RealSubject struct{}
func (r *RealSubject) Do() string {
return "执行以太坊智能合约"
}
type ProxySubject struct {
RealSubject
money int
}
func (p *ProxySubject) Do() string {
if p.money > 0 {
return p.RealSubject.Do()
} else {
return "费用不足,请充值"
}
}
func main() {
var sub Subject
sub=&ProxySubject{
RealSubject: RealSubject{},
money: 10,
}
fmt.Println(sub.Do())
}
UML图: