package main
import"fmt"
type Subject interface {Proxy() string
}
type RealSubject struct{}func(p Proxy)Proxy() string {
var res string
// 在调用真实对象之前,检查缓存,判断权限,等等
p.real.After()// 调用真实对象
p.real.Real()// 调用之后的操作,如缓存结果,对结果进行处理,等等
p.real.After()return res
}
type Proxy struct{
real RealSubject
}func(r RealSubject)Real(){
fmt.Println("real")}func(r RealSubject)Pre(){
fmt.Println("per")}func(r RealSubject)After(){
fmt.Println("after")}
func main(){
var sub Subject
sub =new(Proxy)
sub.Proxy()}