Golang设计模式——21代理模式
代理模式
优点
- 代理模式为其他对象提供一种代理以控制对一个对象的访问。是一种对象结构型模式。
- 职责清晰。
- 高扩展性。
- 智能化。
缺点
- 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
- 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
场景
- 远程代理。
- 虚拟代理。
- Copy-on-Write 代理。
- 保护(Protect or Access)代理。
- Cache代理。
- 防火墙(Firewall)代理。
- 同步化(Synchronization)代理。
- 智能引用(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观察者模式