日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式--代理(Proxy)模式

發布時間:2025/3/21 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式--代理(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)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。