代理模式
发布时间 :
阅读 :
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") }
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件