代理模式

  1. Proxy Pattern
  2. 实现

Proxy Pattern

  代理模式使得一个对象可以给另一个对象提供访问控制。截取所有访问。

实现

  代理模式可以使用在很多地方,例如网络连接,内存中大的对象,一个文件,或者其他消耗大的对象,或者是不可能被复制的对象。

下面是一个简单的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package proxy

import (
"fmt"
"sync"
)

type IObject interface {
ObjDo(action string)
}

type Object struct {
action string
}

func (this *Object) ObjDo(action string) {
fmt.Println("I can do:" + action)
}

type ProObject struct {
obj *Object
}

var one = new(sync.Once)
func (this *ProObject) ObjDo(action string) {
one.Do(func() {
if this.obj==nil{
this.obj=new(Object)
}
})
this.obj.ObjDo(action)
}


1
2
3
4
func main(){
proxy := new(proxy.ProObject)
proxy.ObjDo("Well")
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件