桥接模式(Bridge)

2011-09-05 10:53:07 by 【6yang】, 174 visits, 收藏 | 返回

    意图
        将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    动机
       
    见到见到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();
   
  

分享到:
share

    图片原图

    loading

    loading