JavaScript設(shè)計(jì)模式之代理模式簡(jiǎn)單實(shí)例教程
本文實(shí)例講述了JavaScript設(shè)計(jì)模式之代理模式。分享給大家供大家參考,具體如下:
一、代理模式概念
代理,顧名思義就是幫助別人做事,GoF對(duì)代理模式的定義如下:
代理模式(Proxy),為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。代理模式使得代理對(duì)象控制具體對(duì)象的引用。代理幾乎可以是任何對(duì)象:文件,資源,內(nèi)存中的對(duì)象,或者是一些難以復(fù)制的東西。
解釋:房屋中介,可以代理幫助賣家把房子賣給買家,這中間賣家說要賣的價(jià)錢就可以了,買家也可以提出自己要買的房型,中介可以幫忙處理中間環(huán)節(jié)。最后達(dá)成買賣。中介可以同時(shí)代理很多房屋買賣,并且可以代理租房事宜。
代理模式的組成:
抽象角色:通過接口或抽象類聲明真實(shí)角色實(shí)現(xiàn)的業(yè)務(wù)方法。
代理角色:實(shí)現(xiàn)抽象角色,是真實(shí)角色的代理,通過真實(shí)角色的業(yè)務(wù)邏輯方法來實(shí)現(xiàn)抽象方法,并可以附加自己的操作。
真實(shí)角色:實(shí)現(xiàn)抽象角色,定義真實(shí)角色所要實(shí)現(xiàn)的業(yè)務(wù)邏輯,供代理角色調(diào)用。
二、代理模式的作用和注意事項(xiàng)
模式作用:
1、遠(yuǎn)程代理(一個(gè)對(duì)象將不同空間的對(duì)象進(jìn)行局部代理)
2、虛擬代理(根據(jù)需要?jiǎng)?chuàng)建開銷很大的對(duì)象如渲染網(wǎng)頁暫時(shí)用占位代替真圖)
3、安全代理(控制證實(shí)對(duì)象的訪問權(quán)限)
4、智能指引(調(diào)用對(duì)象代理處理另外一些事情如垃圾回收機(jī)制)
注意事項(xiàng):
1、不能濫用代理,有時(shí)候僅僅是給代碼增加復(fù)雜度
三、代理模式代碼和實(shí)戰(zhàn)總結(jié)
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>代理模式</title>
</head>
<body>
<script>
//代理模式需要三方
//1.買家
function maijia(){
this.name = "小明";
this.money = "30萬";
}
//2.中介
function zhongjie(){
}
zhongjie.prototype.maifang = function(){
//new fongdong(new maijia()).maifang("20萬");
new fongdong(new maijia()).maifang("20萬");
}
//3.賣家
function fongdong(maijia){
this.maijia_name = maijia.name;
this.maijia_money = maijia.money;
this.maifang = function(money){
// console.log("收到了來自【"+this.maijia_name+"】"+money+"人民幣");
console.log("收到了來自【"+this.maijia_name+"】"+this.maijia_money+"人民幣");
}
}
(new zhongjie()).maifang();
</script>
<script>
// A2B
function A(){
this.money = "20RMB";
}
function to(){
if(!(this instanceof to)){
return new to;
}
}
to.prototype.maifang = function(){
var a = new A();
new B().maifang(a.money);
}
function B(){
this.maifang = function(money){
console.log("收到了錢"+money);
}
}
(new to()).maifang();
to().maifang();
</script>
</body>
</html>
使用在線HTML/CSS/JavaScript代碼運(yùn)行工具 http://tools.jb51.net/code/HtmlJsRun測(cè)試運(yùn)行效果如下:

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- javascript設(shè)計(jì)模式 – 代理模式原理與用法實(shí)例分析
- js設(shè)計(jì)模式之代理模式及訂閱發(fā)布模式實(shí)例詳解
- 詳解javascript設(shè)計(jì)模式三:代理模式
- JavaScript設(shè)計(jì)模式之代理模式實(shí)例分析
- JavaScript設(shè)計(jì)模式之緩存代理模式原理與簡(jiǎn)單用法示例
- JavaScript設(shè)計(jì)模式之代理模式詳解
- JavaScript的設(shè)計(jì)模式經(jīng)典之代理模式
- 學(xué)習(xí)JavaScript設(shè)計(jì)模式之代理模式
- 學(xué)習(xí)JavaScript設(shè)計(jì)模式(代理模式)
- 深入理解JavaScript系列(31):設(shè)計(jì)模式之代理模式詳解
- JavaScript設(shè)計(jì)模式之代理模式介紹
- JavaScript設(shè)計(jì)模式學(xué)習(xí)之代理模式
相關(guān)文章
JavaScript給input的value賦值引發(fā)的關(guān)于基本類型值和引用類型值問題
這篇文章主要介紹了JavaScript給input的value賦值引發(fā)的關(guān)于基本類型值和引用類型值問題的相關(guān)資料,需要的朋友可以參考下2015-12-12
FireFox與IE 下js兼容觸發(fā)click事件的代碼
FireFox與IE 下js兼容觸發(fā)click事件 ,對(duì)于需要兼容這兩者的朋友,就需要參考下下面的代碼了2008-11-11
在Layui中操作數(shù)據(jù)表格,給指定單元格添加事件示例
今天小編就為大家分享一篇在Layui中操作數(shù)據(jù)表格,給指定單元格添加事件示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
js,jq,css多方面實(shí)現(xiàn)簡(jiǎn)易下拉菜單功能
這篇文章主要介紹了js,jq,css多方面實(shí)現(xiàn)簡(jiǎn)易下拉菜單功能,需要的朋友可以參考下2017-05-05
用JavaScript實(shí)現(xiàn)PHP的urlencode與urldecode函數(shù)
這篇文章主要介紹了用JavaScript實(shí)現(xiàn)PHP的urlencode與urldecode函數(shù),很多情況下我們用了出來php urlencode出來的網(wǎng)址,需要的朋友可以參考下2015-08-08
微信小程序?qū)崿F(xiàn)定位及到指定位置導(dǎo)航的示例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)定位及到指定位置導(dǎo)航的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

