一,关于代理模式:为其它对象提供一种代理以控制对这个对象的访问
二,网络代理是一种常见的应用,那么就举一个简单的示例来表示代理模式。
1 package main 2 3 import "fmt" 4 5 type NetWork interface { 6 Conn() 7 Close() 8 } 9 10 // 声明服务器对象 11 type Server struct { 12 localIP string 13 } 14 15 // 真实的网络连接器,连接服务器 16 type IpNetWork struct { 17 server *Server 18 } 19 20 func (c *IpNetWork) Conn(serverIp string) { 21 c.server = &Server{localIP: serverIp} 22 fmt.Println(c.server.localIP + "已连接") 23 } 24 25 func (c *IpNetWork) Close() { 26 fmt.Println(c.server.localIP + "已关闭连接") 27 } 28 29 // 代理的网络连接器,代理连接器 30 type ProxyNetWork struct { 31 Ip *IpNetWork 32 } 33 34 func (c *ProxyNetWork) Conn(serverIp string) { 35 // 代理中实际使用的是真实的网络连接器 36 c.Ip = &IpNetWork{} 37 c.Ip.Conn(serverIp) 38 } 39 40 func (c *ProxyNetWork) Close() { 41 c.Ip.Close() 42 } 43 44 func main() { 45 proxy := &ProxyNetWork{} 46 proxy.Conn("192.168.51.471") 47 proxy.Close() 48 }