国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

解析proxy代理模式在Ruby設計模式開發中的運用

2019-10-26 19:28:55
字體:
來源:轉載
供稿:網友

代理模式
Proxy代理模式是一種結構型設計模式,主要解決的問題是:在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由于某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。如下圖:

 201646120047716.jpg (362×188)

  比如說C和A不在一個服務器上,A要頻繁的調用C,我們可以在A上做一個代理類Proxy,把訪問C的工作交給Proxy,這樣對于A來說,就好像在直接訪問C的對象。在對A的開發中我們可以把注意力完全放在業務的實現上。
GoF《設計模式》中說道:為其他對象提供一種代理以控制這個對象的訪問。
Proxy模式的結構:

201646120114617.jpg (421×101)

通過代理模式以客戶透明的形式動態的為目標對象加以行為控制

實例

class BankAccount  def deposit  p "store the money" end endclass Proxy  attr_accessor :bankAccount  def initialize bankAccount  @bankAccount = bankAccount end  def deposit  @bankAccount.deposit end end

 創建銀行賬戶類,再創建代理類,代理類聚合銀行賬戶類,提供相同的行為結構,對客戶來說代理類就是一個偽賬戶類,對代理類做操作的時候,其實就是在對真實的銀行類做操作。
加以行為控制:

class Proxy  attr_accessor :bankAccount  def initialize bankAccount  @bankAccount = bankAccount end  def deposit  check_something  @bankAccount.deposit end  def check_something  #do some checking code end end

 這樣我們就可以在對調用目標對象的同時增加控制代碼,但是這一切都是以透明的方式展示給客戶,對客戶來說就跟調用普通的BankAccount對象方法一樣

bankAccount = BankAccount.newbankAccount.depositproxy = Proxy.new bankAccountproxy.deposit

  Proxy模式的要點:
1、“增加一層間接層”是軟件系統中對許多負責問題的一種常見解決方法。在面向對象系統中,直接使用某些對象會帶來很多問題,作為間接層的proxy對象便是解決這一問題的常用手段。
在我們日常的工作中也常常用到代理模式,比如對于三層結構或者N- tiers結構中DAL數據訪問層,它把對數據庫的訪問進行封裝。BLL業務層的開發者只是調用DAL中的方法來獲得數據。
再比如前一段時間看了看AOP和Remoting方面的資料,對于跨越應用程序域的訪問,要為客戶應用程序提供一個TransparentProxy(透明代理),客戶程序實際上是通過訪問這個代理來訪問實際的類型對象。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通榆县| 高陵县| 礼泉县| 新化县| 蓬安县| 阜南县| 康马县| 泸西县| 郴州市| 凌海市| 安岳县| 民权县| 禹城市| 新野县| 叙永县| 祥云县| 策勒县| 三台县| 南和县| 大足县| 永德县| 普安县| 石门县| 霍邱县| 喀喇沁旗| 伊春市| 宝鸡市| 分宜县| 湛江市| 丰台区| 邯郸市| 锡林郭勒盟| 潞西市| 马尔康县| 肇源县| 临沧市| 扬中市| 东台市| 榆社县| 林州市| 融水|