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

首頁 > 語言 > JavaScript > 正文

javascript設計模式之中介者模式學習筆記

2024-05-06 15:11:29
字體:
來源:轉載
供稿:網友

 先來理解這么一個問題,假如我們前端開發接的需求是需求方給我們需求,可能一個前端開發會和多個需求方打交道,所以會保持多個需求方的聯系,那么在程序里面就意味著保持多個對象的引用,當程序的規模越大,對象會越來越多,他們之間的關系會越來越復雜,那現在假如現在有一個中介者(假如就是我們的主管)來對接多個需求方的需求,那么需求方只需要把所有的需求給我們主管就可以,主管會依次看我們的工作量來給我們分配任務,這樣的話,我們前端開發就不需要和多個業務方聯系,我們只需要和我們主管(也就是中介)聯系即可,這樣的好處就弱化了對象之間的耦合。

日常生活中的列子:

中介者模式對于我們日常生活中經常會碰到,比如我們去房屋中介去租房,房屋中介人在租房者和房東出租者之間形成一條中介;租房者并不關心租誰的房,房東出租者也并不關心它租給誰,因為有中介,所以需要中介來完成這場交易。

中介者模式的作用是解除對象與對象之間的耦合關系,增加一個中介對象后,所有的相關對象都通過中介者對象來通信,而不是相互引用,所以當一個對象發送改變時,只需要通知中介者對象即可。中介者使各個對象之間耦合松散,而且可以獨立地改變它們之間的交互。

實現中介者的列子如下:

不知道大家有沒有玩過英雄殺這個游戲,最早的時候,英雄殺有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這個函數;代碼如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 岚皋县| 屏东县| 甘南县| 新安县| 长顺县| 双峰县| 汶川县| 无极县| 南城县| 黄龙县| 大埔县| 吉林市| 张家港市| 彭阳县| 岫岩| 武功县| 思南县| 宁国市| 土默特左旗| 井研县| 鄄城县| 科尔| 牟定县| 安徽省| 万源市| 东城区| 玉山县| 临安市| 遵化市| 万山特区| 瓮安县| 兖州市| 陆河县| 万安县| 象山县| 贵溪市| 定日县| 涟源市| 涟源市| 滨州市| 华容县|