先來理解這么一個問題,假如我們前端開發接的需求是需求方給我們需求,可能一個前端開發會和多個需求方打交道,所以會保持多個需求方的聯系,那么在程序里面就意味著保持多個對象的引用,當程序的規模越大,對象會越來越多,他們之間的關系會越來越復雜,那現在假如現在有一個中介者(假如就是我們的主管)來對接多個需求方的需求,那么需求方只需要把所有的需求給我們主管就可以,主管會依次看我們的工作量來給我們分配任務,這樣的話,我們前端開發就不需要和多個業務方聯系,我們只需要和我們主管(也就是中介)聯系即可,這樣的好處就弱化了對象之間的耦合。
日常生活中的列子:
中介者模式對于我們日常生活中經常會碰到,比如我們去房屋中介去租房,房屋中介人在租房者和房東出租者之間形成一條中介;租房者并不關心租誰的房,房東出租者也并不關心它租給誰,因為有中介,所以需要中介來完成這場交易。
中介者模式的作用是解除對象與對象之間的耦合關系,增加一個中介對象后,所有的相關對象都通過中介者對象來通信,而不是相互引用,所以當一個對象發送改變時,只需要通知中介者對象即可。中介者使各個對象之間耦合松散,而且可以獨立地改變它們之間的交互。
實現中介者的列子如下:
不知道大家有沒有玩過英雄殺這個游戲,最早的時候,英雄殺有2個人(分別是敵人和自己);我們針對這個游戲先使用普通的函數來實現如下:
比如先定義一個函數,該函數有三個方法,分別是win(贏), lose(輸),和die(敵人死亡)這三個函數;只要一個玩家死亡該游戲就結束了,同時需要通知它的對手勝利了; 代碼需要編寫如下:
function Hero(name) { this.name = name; this.enemy = null; }Hero.prototype.win = function(){ console.log(this.name + 'Won');}Hero.prototype.lose = function(){ console.log(this.name + 'lose');}Hero.prototype.die = function(){ this.lose(); this.enemy.win();}// 初始化2個對象var h1 = new Hero("朱元璋");var h2 = new Hero("劉伯溫");// 給玩家設置敵人h1.enemy = h2;h2.enemy = h1;// 朱元璋死了 也就輸了h1.die(); // 輸出 朱元璋lose 劉伯溫Won現在我們再來為游戲添加隊友
比如現在我們來為游戲添加隊友,比如英雄殺有6人一組,那么這種情況下就有隊友,敵人也有3個;因此我們需要區分是敵人還是隊友需要隊的顏色這個字段,如果隊的顏色相同的話,那么就是同一個隊的,否則的話就是敵人;
我們可以先定義一個數組players來保存所有的玩家,在創建玩家之后,循環players來給每個玩家設置隊友或者敵人;
var players = [];
接著我們再來編寫Hero這個函數;代碼如下:
新聞熱點
疑難解答
圖片精選