Golang设计模式——21代理模式

代理模式

优点

  1. 代理模式为其他对象提供一种代理以控制对一个对象的访问。是一种对象结构型模式。
  2. 职责清晰。
  3. 高扩展性。
  4. 智能化。

缺点

  1. 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
  2. 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

场景

  1. 远程代理。
  2. 虚拟代理。
  3. Copy-on-Write 代理。
  4. 保护(Protect or Access)代理。
  5. Cache代理。
  6. 防火墙(Firewall)代理。
  7. 同步化(Synchronization)代理。
  8. 智能引用(Smart Reference)代理。

代码

在这里插入图片描述

package Proxy

import "fmt"

type ITask interface {
	RentHouse(desc string, price int)
}

type Task struct {
}

func (t *Task) RentHouse(desc string, price int) {
	fmt.Println(fmt.Sprintf("租房子的地址%s,价格%d,中介费%d", desc, price, price))
}

type AgentTask struct {
	task *Task
}

func NewAgentTask() *AgentTask {
	return &AgentTask{task: &Task{}}
}

func (t *AgentTask) RentHouse(desc string, price int) {
	t.task.RentHouse(desc, price)
}

package Proxy

import "testing"

func TestAgentTask_RentHouse(t *testing.T) {
	agent:=NewAgentTask()
	agent.RentHouse("浙江省",10099)
}

其他设计模式

设计模式Git源代码
00简单工厂模式
01工厂方法模式
02抽象工厂模式
03外观模式
04建造者模式
05桥接模式
06命令模式
07迭代器模式
08模板模式
09访问者模式
10备忘录模式
11责任链模式
12中介模式
13原型模式
14状态模式
15策略模式
16享元模式
17组合模式
18解释器模式
19单例模式
20适配器模式
21代理模式
22装饰器模式
23观察者模式

posted @ 2021-09-26 15:12  cheems~  阅读(38)  评论(0编辑  收藏  举报