失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【golang】代理模式 proxy using in go

【golang】代理模式 proxy using in go

时间:2018-12-03 15:03:42

相关推荐

【golang】代理模式 proxy using in go

1. Proxy Pattern what? how?

代理模式是一种结构模式,其目的是提供对象的代理或中介来控制对象的访问。通常包装对象以隐藏其某些特征。下面举一个汽车的代理,Driven接口,Car和CarProxy都实现了,但是通过代理可以实现特殊逻辑的植入,如开车司机并限制司机的年龄等;

package mainimport "fmt"type Driven interface {Drive()}type Car struct {}func (c *Car) Drive(){fmt.Println("Car being driven")}type Driver struct {Age int}type CarProxy struct {carCardriver *Driver}func (c *CarProxy) Drive(){if c.driver.Age >= 18 {c.car.Drive()}else{fmt.Println("Driver too young!!!")}}func NewCarProxy(driver *Driver) *CarProxy {return &CarProxy{Car{}, driver}}func main(){car := NewCarProxy(&Driver{20})car.Drive()}output:Car being driven

2. 代理模式和其他模式的关系:

门面模式和代理模式是相似的,因为在两者都可以缓冲复杂的实体,并初始化它自己。

Adapter 模式为包装对象提供了一个不同的接口,而代理模式提供了相同的接口,修饰模式(Decorator Pattern)提供了一个增强的接口。

3.优点和缺点

优点:

允许在客户端不知道的情况下控制服务对象(main struct)。允许在客户端不关心的情况下管理服务对象的生命周期。即使服务对象尚未准备好或尚未可用,代理也可以工作。帮助实施开闭原则(open-close)。

缺点:

代码可能会变得复杂,因为引入许多新类。服务响应可能受到影响,因为添加了执行时间的延迟

如果觉得《【golang】代理模式 proxy using in go》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。