教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 2静态代理模式-golang

2静态代理模式-golang

发布时间:2021-12-30   编辑:jiaochengji.com
教程集为您提供2静态代理模式-golang等资源,欢迎您收藏本站,我们将为您提供最新的2静态代理模式-golang资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><pre><code class="lang-go hljs"> 代理模式<span class="token punctuation">(</span>Proxy pattern<span class="token punctuation">)</span> <span class="token operator">-</span>核心作用<span class="token punctuation">:</span> 通过代理,控制对对象的访问! 可以详细控制访问某个<span class="token punctuation">(</span>某类<span class="token punctuation">)</span>对象的方法,在调用这个方法前做前置处理,调用这个方法方法做后置处理。 <span class="token function">AOP</span><span class="token punctuation">(</span>Aspect Oriented Promarmming面向切片编程<span class="token punctuation">)</span>的核心实现机制。 <span class="token operator">-</span> 核心角色: a<span class="token punctuation">.</span>抽象角色 <span class="token operator">-</span>定义代理角色和真实角色的公共对外的方法 b<span class="token punctuation">.</span>真实角色 <span class="token operator">-</span> 实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 <span class="token operator">-</span> 关注真正的业务逻辑 c<span class="token punctuation">.</span>代理角色 <span class="token operator">-</span> 实现抽象色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象对象方法,并可以附加自己的操作。 <span class="token operator">-</span> 将统一的流程控制放到代理角色中处理。 应用场景: a<span class="token punctuation">.</span> 安全代理<span class="token punctuation">:</span>屏蔽对真实角色的直接访问 b<span class="token punctuation">.</span> 远程代理<span class="token punctuation">:</span>通过代理类处理远程方法调用<span class="token punctuation">(</span>RMI<span class="token punctuation">)</span> c<span class="token punctuation">.</span> 延迟加载<span class="token punctuation">:</span>通过加载轻量级的代理对象,真正需要再加载真实的对象 分类<span class="token punctuation">:</span> 静态代理<span class="token punctuation">(</span>静态定义代理类<span class="token punctuation">)</span> 动态代理<span class="token punctuation">(</span>动态生成代理类<span class="token punctuation">)</span> <span class="token keyword">package</span> staticProxy <span class="token keyword">import</span> <span class="token string">"fmt"</span> <span class="token keyword">type</span> Star <span class="token keyword">interface</span> <span class="token punctuation">{</span> <span class="token comment">//面谈</span> <span class="token function">Confer</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//签合同</span> <span class="token function">SignContract</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//订票</span> <span class="token function">BookTicket</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//唱歌</span> <span class="token function">Sing</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//收钱</span> <span class="token function">CollectMoney</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> RealStar <span class="token keyword">struct</span> <span class="token punctuation">{</span> Name <span class="token builtin">string</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token function">NewRealStar</span><span class="token punctuation">(</span>name <span class="token builtin">string</span><span class="token punctuation">)</span> Star <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token operator">&</span>RealStar<span class="token punctuation">{</span>Name<span class="token punctuation">:</span> name<span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">//面谈</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>RealStar<span class="token punctuation">)</span><span class="token function">Confer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->面谈\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//签合同</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>RealStar<span class="token punctuation">)</span><span class="token function">SignContract</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->签合同\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//订票</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>RealStar<span class="token punctuation">)</span><span class="token function">BookTicket</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->订票\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//唱歌</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>RealStar<span class="token punctuation">)</span><span class="token function">Sing</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->唱歌\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//收钱地</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>RealStar<span class="token punctuation">)</span><span class="token function">CollectMoney</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->收钱\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">type</span> Proxy <span class="token keyword">struct</span> <span class="token punctuation">{</span> Name <span class="token builtin">string</span> star Star <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token function">NewProxy</span><span class="token punctuation">(</span>name <span class="token builtin">string</span><span class="token punctuation">,</span>star Star<span class="token punctuation">)</span> Star <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token operator">&</span>Proxy<span class="token punctuation">{</span>Name<span class="token punctuation">:</span> name<span class="token punctuation">,</span>star<span class="token punctuation">:</span> star<span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">//面谈</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>Proxy<span class="token punctuation">)</span><span class="token function">Confer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->面谈\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//签合同</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>Proxy<span class="token punctuation">)</span><span class="token function">SignContract</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->签合同\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//订票</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>Proxy<span class="token punctuation">)</span><span class="token function">BookTicket</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->订票\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//唱歌</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>Proxy<span class="token punctuation">)</span><span class="token function">Sing</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> this<span class="token punctuation">.</span>star<span class="token punctuation">.</span><span class="token function">Sing</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//收钱地</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>this <span class="token operator">*</span>Proxy<span class="token punctuation">)</span><span class="token function">CollectMoney</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%s---->收钱\n"</span><span class="token punctuation">,</span>this<span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">package</span> staticProxy <span class="token keyword">import</span><span class="token punctuation">(</span> <span class="token string">"testing"</span> <span class="token punctuation">)</span> <span class="token keyword">func</span> <span class="token function">Test_Proxy</span><span class="token punctuation">(</span>t <span class="token operator">*</span>testing<span class="token punctuation">.</span>T<span class="token punctuation">)</span><span class="token punctuation">{</span> star <span class="token operator">:=</span> <span class="token function">NewRealStar</span><span class="token punctuation">(</span><span class="token string">"周杰伦"</span><span class="token punctuation">)</span> proxy <span class="token operator">:=</span> <span class="token function">NewProxy</span><span class="token punctuation">(</span><span class="token string">"A代理"</span><span class="token punctuation">,</span>star<span class="token punctuation">)</span><span class="token punctuation">;</span> proxy<span class="token punctuation">.</span><span class="token function">Confer</span><span class="token punctuation">(</span><span class="token punctuation">)</span> proxy<span class="token punctuation">.</span><span class="token function">SignContract</span><span class="token punctuation">(</span><span class="token punctuation">)</span> proxy<span class="token punctuation">.</span><span class="token function">BookTicket</span><span class="token punctuation">(</span><span class="token punctuation">)</span> proxy<span class="token punctuation">.</span><span class="token function">Sing</span><span class="token punctuation">(</span><span class="token punctuation">)</span> proxy<span class="token punctuation">.</span><span class="token function">CollectMoney</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//result</span> <span class="token keyword">go</span> test <span class="token operator">-</span>v <span class="token operator">==</span><span class="token operator">=</span> RUN Test_Proxy A代理<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">></span>面谈 A代理<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">></span>签合同 A代理<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">></span>订票 周杰伦<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">></span>唱歌 A代理<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">></span>收钱 <span class="token operator">--</span><span class="token operator">-</span> PASS<span class="token punctuation">:</span> Test_Proxy <span class="token punctuation">(</span><span class="token number">0.00</span>s<span class="token punctuation">)</span> PASS ok mlemon_ssh<span class="token operator">/</span>factory<span class="token operator">/</span>proxy<span class="token operator">/</span>staticProxy <span class="token number">0.394</span>s </code></pre> 到此这篇关于“2静态代理模式-golang”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
php 伪静态 url重写简单示例
php页面静态化的小例子
深入理解c# static 静态数据成员和方法
伪静态几种做法
golang和python有什么区别?
php模版生成html的小例子
深入理解[代理模式]原理与技术
为什么要学 Go
php static静态属性和静态方法的调用
PHP单例模式静态类解析和实现源代码

[关闭]
~ ~