go设计模式之代理模式

代理在计算机领域是个经常被提及的名词,如nginx就常被用于webf服务的代理。那么怎么实现代理这种模式?

定义一个接口,定义要代理的执行的方法

定义一个真正执行类,实现接口定义的方法

定义代理类,实现接口定义的方法,在代理中,通过调用真正执行方法调用

以下使用go实现该模式

package main

import "fmt"

type Subject interface {
	Do() string
}

type RelSubject struct {
}

func (r *RelSubject) Do() string {
	return "test"
}

type Proxy struct {
	real RelSubject
}

func (proxy *Proxy) Do() string {
  res := proxy.real.Do()
  return res
}

func main() {
	var sub Subject
	sub = &Proxy{}

	res := sub.Do()

	fmt.Println(res)
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏软件开发 -- 分享 互助 成长

谈谈 char *num="123";和char num[4]="123";的区别

最近写程序的时候发现这样一个问题 #include<iostream> #include <string.h> using namespace std; vo...

21880
来自专栏遊俠扎彪

GNU C之圆括号套花括号(表达式中的复合语句)

GNU C对ANSI C做了很多扩展,除比较知名的0长度数组、typeof关键字之类的以外,还有一个比较有意思的,那就是圆括号里面套花括号的复合语句。举例如下:

26970
来自专栏点滴积累

geotrellis使用(三十)使用geotrellis读取PostGIS空间数据

前言 最近事情很多,各种你想不到的事情——such as singing and dancing——再加上最近又研究docker上瘾,所以geotrellis看...

44470
来自专栏达摩兵的技术空间

数组双向绑定的简单分享

本文主要是摘录《vuejs权威指南》部分的相关解读,我们都知道vue对数据支持双向绑定,对数组也是支持的,但是其在官网有明确说明,对于数组通过 对象.语法来修改...

15120
来自专栏十月梦想

字符串对象位置相关操作

8120
来自专栏章鱼的慢慢技术路

Go指南练习_Stringer

13820
来自专栏HTML5学堂

2015.12.21 HTML5真题练习

HTML5学堂:每天一道题,强壮程序员!今日主要涉及12.18日关于字符串相关知识题目的解答,以及一道涉及数据类型的题目。 HTML5真题【2015.12.18...

29470
来自专栏猿人谷

技术怪题

有些公司的题真的是会让咱们大跌眼镜。不信,看下面一道题。 int main() { if( )    {  printf("Hello "); }...

20870
来自专栏老马寒门IT

Node入门教程(5)第四章:global 全局变量

global - 全局变量 全局对象(global object),不要和 全局的对象( global objects )或称标准内置对象混淆。这里说的全局的对...

30940
来自专栏老马说编程

(72) 显式条件 / 计算机程序的思维逻辑

上节我们介绍了显式锁,本节介绍关联的显式条件,介绍其用法和原理。显式条件也可以被称做条件变量、条件队列、或条件,后文我们可能会交替使用。 用法 基本概念和方法...

20160

扫码关注云+社区

领取腾讯云代金券