数码资讯
javascript设计模式的中介模式中介器
一、总摘要 1,作者 让我们从日常生活中做一个简单的例子。我们租的房屋中介和房屋中介租房,房东出租形式之间的中介,租房者不在乎自己这套房子的租金,房东的出租人不在乎他租金。这种交易变得如此方便,因为中介的存在。 在软件开发过程中,必然会遇到这样的情况:多个类或子系统相互作用,交互非常繁琐,每个类都必
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
一、总摘要
1,作者
让我们从日常生活中做一个简单的例子。我们租的房屋中介和房屋中介租房,房东出租形式之间的中介,租房者不在乎自己这套房子的租金,房东的出租人不在乎他租金。这种交易变得如此方便,因为中介的存在。
在软件开发过程中,必然会遇到这样的情况:多个类或子系统相互作用,交互非常繁琐,每个类都必须知道需要交互的类,因此它们之间的耦合将非常严重,结果非常严重,大熊非常生气!(~ ~ ~ ~ ~ ~ ~ _ ~ > <)
既然问题提出了,那么我们在这个时期就起主导作用了——中介模式出来了。
中介器的作用是封装对象之间的交互,如果一个对象的操作能引起其他相关对象的改变,而对象本身不想处理这些关系,那么它就可以去找代理,让它处理这些麻烦的关系:
复制代码代码如下所示:
var参与者=函数(名称){
this.name =名称;
this.chatroom = null;
};
participant.prototype = { {
发送:函数(消息,to){
This.chatroom.send(消息,这对);
},
接收:函数(消息,从){
log.add(from.name + + this.name +:+信息);
}
};
聊天室功能(){ var =()
var参与者{ };
返回{
寄存器:函数(参与者){
参与者{参与者;
这participant.chatroom =;
},
发送:函数(消息,从,到){
如果(to){
to.receive(消息、从);
{人}
对于(参与者中的键){
如果(参与者{键}!=从){
参与者{键}接收(消息,从);
}
}
}
}
};
};
var =(函数()){()
var log;
返回{
添加函数:;;},
显示函数(){警报(log);log = ;}
}
});
函数运行(){
Var Yoko =新的参与者(妻子);
var =新参与者();
Var Paul =新参与者(保罗);
新参与者();
聊天室聊天室()=新功;
chatroom.register(Yoko);
chatroom.register(约翰);
Chatroom.register (Paul);
chatroom.register(RIN);
Yoko.send(所有你需要的是爱。);
Yoko.send(我爱你,约翰。);
John.send(嘿,不需要广播
Paul.send(哈哈,我听说!;
Rin.send(保罗,你怎么认为
Log.show();
}
在示例代码中,我们有四个参与者,通过注册一个聊天室(中介)来添加聊天会话,每个参与者的参与者代表,参与者互相发送消息和聊天室的处理路线。
这里的聊天室对象起中介作用,协调其他对象,合理组织,减少耦合。
二、源案例参考
我们应该熟悉MVC三层模型实体模型(模型)、视图表示层(视图)和控制层(控制/中介)。
控制层是表示层与模型层之间的中介,一般来说,MVC也是中介模型在框架设计中的应用。
三,案例介绍
复制代码代码如下所示:
函数播放器(名称){
this.points = 0;
this.name =名称;
}
(player.prototype.play =功能){
this.points = 1;
Mediator.played();
};
var记分卡= {
元:document.getelementbyid('results),
更新:函数(得分){
var i,味精=;
为(我在得分){
如果(score.hasownproperty(I)){
+ +;
味精=得分{我};
+;
}
}
this.element.innerhtml =味精;
}
};
var中介{ {
球员:{ },
安装程序:函数(){
VaR的球员= this.players;
players.home =新球员('home');
players.guest =新球员(客用的);
},
播放:函数(){
VaR的球员= this.players,
得分= { {
家庭:players.home.points,
客人:players.guest.points
};
Scoreboard.update (score);
},
按键:功能(e){
E = e window.event | |;
如果(e.which = 49){
Mediator.players.home.play();
返回;
}
如果(e.which = 48){
Mediator.players.guest.play();
返回;
}
}
};
Mediator.setup();
window.onkeypress = mediator.keypress;
setTimeout(){()函数(
window.onkeypress = null;
console.log(游戏结束!;
},30000);
四,总结
为什么中介
对象之间有很多交互。每个对象的动作相互依赖,修改一个对象的行为并修改许多其他对象的行为。
如果我们使用中介模式,我们可以使对象之间的耦合松散。我们只需要关注与调解人的关系,使多对多关系成一对多关系。
降低了系统的复杂度,提高了系统的可扩展性。
使用中介模式的场合
1。一组定义良好的对象现在用于复杂的通信。
2。自定义一个分布在多个类中且不希望生成太多子类的行为。
可以看出,中介对象主要是用来封装行为的,行为的参与者是那些对象,但通过中介,这些对象不需要相互了解(德米特里定律的具体实现)。
使用中介模式的优点:
1。减少系统对象之间的耦合,从而使对象易于重用。
2。提高了系统的灵活性,使系统易于扩展和维护。
使用中介模式的缺点:
中介模式的弊端是显而易见的,因为中介承担了更多的责任,一旦中介对象出现问题,整个系统就会受到很大的影响。
1,作者
让我们从日常生活中做一个简单的例子。我们租的房屋中介和房屋中介租房,房东出租形式之间的中介,租房者不在乎自己这套房子的租金,房东的出租人不在乎他租金。这种交易变得如此方便,因为中介的存在。
在软件开发过程中,必然会遇到这样的情况:多个类或子系统相互作用,交互非常繁琐,每个类都必须知道需要交互的类,因此它们之间的耦合将非常严重,结果非常严重,大熊非常生气!(~ ~ ~ ~ ~ ~ ~ _ ~ > <)
既然问题提出了,那么我们在这个时期就起主导作用了——中介模式出来了。
中介器的作用是封装对象之间的交互,如果一个对象的操作能引起其他相关对象的改变,而对象本身不想处理这些关系,那么它就可以去找代理,让它处理这些麻烦的关系:
复制代码代码如下所示:
var参与者=函数(名称){
this.name =名称;
this.chatroom = null;
};
participant.prototype = { {
发送:函数(消息,to){
This.chatroom.send(消息,这对);
},
接收:函数(消息,从){
log.add(from.name + + this.name +:+信息);
}
};
聊天室功能(){ var =()
var参与者{ };
返回{
寄存器:函数(参与者){
参与者{参与者;
这participant.chatroom =;
},
发送:函数(消息,从,到){
如果(to){
to.receive(消息、从);
{人}
对于(参与者中的键){
如果(参与者{键}!=从){
参与者{键}接收(消息,从);
}
}
}
}
};
};
var =(函数()){()
var log;
返回{
添加函数:;;},
显示函数(){警报(log);log = ;}
}
});
函数运行(){
Var Yoko =新的参与者(妻子);
var =新参与者();
Var Paul =新参与者(保罗);
新参与者();
聊天室聊天室()=新功;
chatroom.register(Yoko);
chatroom.register(约翰);
Chatroom.register (Paul);
chatroom.register(RIN);
Yoko.send(所有你需要的是爱。);
Yoko.send(我爱你,约翰。);
John.send(嘿,不需要广播
Paul.send(哈哈,我听说!;
Rin.send(保罗,你怎么认为
Log.show();
}
在示例代码中,我们有四个参与者,通过注册一个聊天室(中介)来添加聊天会话,每个参与者的参与者代表,参与者互相发送消息和聊天室的处理路线。
这里的聊天室对象起中介作用,协调其他对象,合理组织,减少耦合。
二、源案例参考
我们应该熟悉MVC三层模型实体模型(模型)、视图表示层(视图)和控制层(控制/中介)。
控制层是表示层与模型层之间的中介,一般来说,MVC也是中介模型在框架设计中的应用。
三,案例介绍
复制代码代码如下所示:
函数播放器(名称){
this.points = 0;
this.name =名称;
}
(player.prototype.play =功能){
this.points = 1;
Mediator.played();
};
var记分卡= {
元:document.getelementbyid('results),
更新:函数(得分){
var i,味精=;
为(我在得分){
如果(score.hasownproperty(I)){
+ +;
味精=得分{我};
+;
}
}
this.element.innerhtml =味精;
}
};
var中介{ {
球员:{ },
安装程序:函数(){
VaR的球员= this.players;
players.home =新球员('home');
players.guest =新球员(客用的);
},
播放:函数(){
VaR的球员= this.players,
得分= { {
家庭:players.home.points,
客人:players.guest.points
};
Scoreboard.update (score);
},
按键:功能(e){
E = e window.event | |;
如果(e.which = 49){
Mediator.players.home.play();
返回;
}
如果(e.which = 48){
Mediator.players.guest.play();
返回;
}
}
};
Mediator.setup();
window.onkeypress = mediator.keypress;
setTimeout(){()函数(
window.onkeypress = null;
console.log(游戏结束!;
},30000);
四,总结
为什么中介
对象之间有很多交互。每个对象的动作相互依赖,修改一个对象的行为并修改许多其他对象的行为。
如果我们使用中介模式,我们可以使对象之间的耦合松散。我们只需要关注与调解人的关系,使多对多关系成一对多关系。
降低了系统的复杂度,提高了系统的可扩展性。
使用中介模式的场合
1。一组定义良好的对象现在用于复杂的通信。
2。自定义一个分布在多个类中且不希望生成太多子类的行为。
可以看出,中介对象主要是用来封装行为的,行为的参与者是那些对象,但通过中介,这些对象不需要相互了解(德米特里定律的具体实现)。
使用中介模式的优点:
1。减少系统对象之间的耦合,从而使对象易于重用。
2。提高了系统的灵活性,使系统易于扩展和维护。
使用中介模式的缺点:
中介模式的弊端是显而易见的,因为中介承担了更多的责任,一旦中介对象出现问题,整个系统就会受到很大的影响。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。