意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
动机
见到见到PLMM应该说,哇美女,见到胖一点的MM应该说丰满,见到不PL的MM应该说可爱等等。我们来实际这样的自动识别系统,根据面向对象的抽象实 现,会设计一个MM抽象、设计一个问好行为的抽象。然后将MM抽象与行为抽象组合——不直接使用继承的原因为:当一个抽象可能有多个实现时,通常用继承来 协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难 以对抽象部分和实现部分独立地进行修改、扩充和重用。通过桥接模式也可以解藕继承上的固定关系。如果有一天见到的有性感有漂亮的MM,我们要说哇SEX。 结果为MM的抽象与问好的话又要重新的定义组合。
这个时候即可用上桥接模式,桥接模式就是使的实现与实现的行为从原来的固定关系,转变为动态关系。说白点桥接模式就是抽象MM与所说的话之间的组合动作。
JavaScript示例
var MM = function()
{
this.say=function( w )
{
Bridge.getCompliment().say(w );
}
}
var Compliment = function(m)
{
var message = m||""
this.say=function( w )
{
alert(w||message);
}
}
var plmm = new MM();
var sexplmm = new MM();
var saypl = new Compliment("漂亮!");
var saysex = new Compliment("性感又漂亮!");
var Bridge = {
getCompliment : function()
{
return this.compliment;
},
setCompliment : function(c)
{
this.compliment = c||new Compliment;
}
};
//说漂亮!
Bridge.setCompliment(saypl);
plmm.say();
//性感又漂亮!
Bridge.setCompliment(saysex);
plmm.say();
loading