设计模式--代理(Proxy)模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式--代理(Proxy)模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模式定義
為其他對象提供一種代理以控制(隔離,使用接口)對這個對象的訪問
類圖
要點總結
- “增加一層間接層”是軟件系統中對許多復雜問題的一種常見解決方法,在面向對象系統中,直接使用某些對象會帶來很多問題,作為間接層的proxy對象便是解決這一問題的常用手段
- 具體proxy設計模式的實現方法、實現粒度都相差很大,有些可能對單個對象做細粒度的控制,如copy-on-write技術,有些可能對組件模塊提供抽象代理層,在架構層次對對象做proxy
- Porxy并不一定要求保持接口完整的一致性,只要能夠實現間接控制,有時候損失一些透明性是可以接收的
Go語言代碼實現
工程目錄
proxy.go
package Proxyimport ("fmt""strconv" )type ITask interface {RentHouse(desc string, price int) }type Task struct {}func (t *Task) RentHouse(desc string, price int){fmt.Println(fmt.Sprintf("租房子的地址%s,價錢%s,中介費%s", desc, strconv.Itoa(price), strconv.Itoa(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) }proxy_test.go
package Proxyimport ("testing" )func TestAgentTask_RentHouse(t *testing.T) {agent := NewAgentTask()agent.RentHouse("北京", 8000) }總結
以上是生活随笔為你收集整理的设计模式--代理(Proxy)模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式--解析器(Interprete
- 下一篇: 设计模式--适配器(Adapter)模式