设计模式go语言实现----代理模式proxy

1 定义

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问

UML类图:
在这里插入图片描述
代理模式主要包含以下三个角色:

  • Subject(抽象主题角色):定义了Proxy和RealSubject的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy
  • RealSubject(真实主题角色):定义了Proxy所代表的真实实体
  • Proxy(代理主题角色):保存一个Subject的引用使得代理可以访问实体,并提供一个于Subject的接口相同的接口,这样代理就可以用来替代实体

2 go语言实现

2.1 实现Subject接口

type Subject interface {
	Request()
}

2.2 实现RealSubject

type RealSubject struct{}

func (rs RealSubject) Request() {
	fmt.Println("real request")
}

2.3 实现Proxy

type Proxy struct {
	RealSubject
}

func (proxy Proxy) Request() {
	proxy.RealSubject.Request()
}

2.4 客户端调用

func main() {
	tRealSubject := proxy.RealSubject{}
	tProxy := proxy.Proxy{
		RealSubject: tRealSubject,
	}
	tProxy.Request()
}
发布了30 篇原创文章 · 获赞 3 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览