[设计模式 Go实现] 结构型~代理模式

2024-01-08 22:34:33

代理模式用于延迟处理操作或者在进行实际操作前后进行其它处理。

代理模式的常见用法有
  • 虚代理
  • COW代理
  • 远程代理
  • 保护代理
  • Cache 代理
  • 防火墙代理
  • 同步代理
  • 智能指引

等。。。

proxy.go
package proxy

type Subject interface {
    Do() string
}

type RealSubject struct{}

func (RealSubject) Do() string {
    return "real"
}

type Proxy struct {
    real RealSubject
}

func (p Proxy) Do() string {
    var res string

    // 在调用真实对象之前的工作,检查缓存,判断权限,实例化真实对象等。。
    res += "pre:"

    // 调用真实对象
    res += p.real.Do()

    // 调用之后的操作,如缓存结果,对结果进行处理等。。
    res += ":after"

    return res
}
proxy_test.go
package proxy

import "testing"

func TestProxy(t *testing.T) {
    var sub Subject
    sub = &Proxy{}

    res := sub.Do()

    if res != "pre:real:after" {
        t.Fail()
    }
}

文章来源:https://blog.csdn.net/qq_45704048/article/details/135467532
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。