重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這篇文章主要講解了如何使用javascript中的代理模式,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
公司主營業務:網站設計制作、網站設計、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯推出清徐免費做網站回饋大家。
介紹:代理使我們很常見的一眾模式,proxy,nginx都稱之為代理,代理是什么意思呢?代理模式在客戶端和目標對象之間加入一個新的代理對象,代理對象起到一個中介作用,去掉客戶不能看到的內容和服務,或者增添客戶需要的額外服務。
定義:給某一個對象提供一個代理,并由代理對象控制對原對象的引用。代理模式是一種對象結構型模式。
場景:我們還是以畫圖形為例,我將所有的繪圖動作包裝到Shape類中,使用代理模式來部分開放功能給客戶。
示例:
var Shape = function(color){ console.log('創建了一個對象'); this.color = color; this.x; this.y; this.radius; this.setAttr = function(x, y, radius){ this.x = x; this.y = y; this.radius = radius; } this.drawCircle = function(){ console.log('畫圓: 顏色:' + this.color + ' x:' + this.x + ' y:' + this.y + ' radius:' + this.radius) } this.drawSquare = function(){ console.log('畫方: 顏色:' + this.color + ' x:' + this.x + ' y:' + this.y ) } this.drawTriangle = function(){ console.log('畫三角: 顏色:' + this.color + ' x:' + this.x + ' y:' + this.y ) } } var proxyShape = function(color, x, y, radius){ this.color = color; this.x = x; this.y = y; this.radius = radius; this.shape = null; this.drawSquare = function(){ if(this.shape === null){ this.shape = new Shape(this.color); this.shape.setAttr(this.x, this.y, this.radius); } this.shape.drawSquare(); } } var square = new proxyShape('red', 10, 10); square.drawSquare(); square.drawSquare(); // 創建了一個對象 // 畫方: 顏色:red x:10 y:10 // 畫方: 顏色:red x:10 y:10
你可以在proxyShape中增加一些日志,權限等任務。因為代理類的存在,新增的任務不會影響到Shape類。
代理模式為對象的簡介訪問提供了解決方案,可以對對象的訪問進行控制。
代理模式總結:
優點:
* 代理模式可以協調調用者和被調用這,一定程度降低了系統耦合度。
缺點:
* 由于增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。
* 實現代理模式需要額外的工作,有些代理模式的實現非常復雜。
適用場景:
* 當客戶端需要訪問遠程主機中的對象時,可以使用遠程代理。
* 當需要用一個消耗資源較少的對象來代表資源消耗較多的對象,可以使用虛擬代理
* 當需要控制一個對象的訪問,為不同用戶提供不同級別的訪問權限時可以使用保護代理
看完上述內容,是不是對如何使用javascript中的代理模式有進一步的了解,如果還想學習更多內容,歡迎關注創新互聯行業資訊頻道。