代理模式是什麼 代理模式是一種結構型設計模式, 讓你能提供真實服務對象的替代品給客戶端使用。 代理接收客戶端的請求併進行一些處理 (訪問控制和緩存等), 然後再將請求傳遞給服務對象。 為什麼用代理模式 在某些情況下客戶類不想或者不能訪問目標對象,這時候就可以使用代理類訪問。 代理模式怎麼實現 pac ...
代理模式是什麼
代理模式是一種結構型設計模式, 讓你能提供真實服務對象的替代品給客戶端使用。 代理接收客戶端的請求併進行一些處理 (訪問控制和緩存等), 然後再將請求傳遞給服務對象。
為什麼用代理模式
在某些情況下客戶類不想或者不能訪問目標對象,這時候就可以使用代理類訪問。
代理模式怎麼實現
package proxy
//代理模式
type Subject interface {
Do() string
}
type RealSubject struct{}
func (RealSubject) Do() string {
return "real"
}
type Proxy struct {
real RealSubject
}
func (p Proxy) Do() string {
var res string
// 在調用真實對象之前的工作,檢查緩存,判斷許可權,實例化真實對象等。。
res += "pre:"
// 調用真實對象
res += p.real.Do()
// 調用之後的操作,如緩存結果,對結果進行處理等。。
res += ":after"
return res
}
優點
- 代理模式在客戶端和目標對象之間起到一個中介作用和保護作用。
- 代理模式可以擴展目標對象的功能。
- 代理模式將目標對象和客戶端分類在一定程度上降低了系統的耦合度。增加了程式的可擴展性。
缺點
- 代理模式會造成系統類的增加,增加了系統的複雜度。