学习Go语言之代理模式

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

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

 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 }

 

posted @ 2019-08-27 14:37  卓扬  阅读(954)  评论(0编辑  收藏  举报