学习Go语言之代理模式-飞外

一,关于代理模式:为其它对象提供一种代理以控制对这个对象的访问

二,网络代理是一种常见的应用,那么就举一个简单的示例来表示代理模式。

 1 package main 3 import "fmt" 5 type NetWork interface { 6 Conn() 7 Close()10 // 声明服务器对象11 type Server struct {12 localIP string15 // 真实的网络连接器,连接服务器16 type IpNetWork struct {17 server *Server20 func (c *IpNetWork) Conn(serverIp string) {21 c.server = Server{localIP: serverIp}22 fmt.Println(c.server.localIP + "已连接")25 func (c *IpNetWork) Close() {26 fmt.Println(c.server.localIP + "已关闭连接")29 // 代理的网络连接器,代理连接器30 type ProxyNetWork struct {31 Ip *IpNetWork34 func (c *ProxyNetWork) Conn(serverIp string) {35 // 代理中实际使用的是真实的网络连接器36 c.Ip = IpNetWork{}37 c.Ip.Conn(serverIp)40 func (c *ProxyNetWork) Close() {41 c.Ip.Close()44 func main() {45 proxy := ProxyNetWork{}46 proxy.Conn("192.168.51.471")47 proxy.Close()48 }