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图: