码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式(十一) : 结构型模式--桥梁模式

时间:2014-06-02 08:57:44      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:des   c   style   class   blog   code   

桥梁模式的用意是:将抽象化和实现化惊醒脱耦,使得两者可以独立的变化。所谓脱耦就是将抽象化和实现化之间的耦合解脱开,也就是强关联变成若关联。

强关联就是在编译期就已经确立的,无法在运行时改变;弱关联就是可以动态的确定并且运行期可以改变的关联。继承是强关联,合成、聚合是弱关联。

类图:

bubuko.com,布布扣

示意性代码:

package com.javadesignpattern.Bridge;

public interface Implementor {
    
    void operation();

}
bubuko.com,布布扣
package com.javadesignpattern.Bridge;

public class ConcreteImplementor1 implements Implementor {

    public void operation() {
        // TODO Auto-generated method stub
        System.out.println(ConcreteImplementor1.class + ": operation function");
        //System.out.println("Customer");
    }

}
bubuko.com,布布扣
bubuko.com,布布扣
package com.javadesignpattern.Bridge;

public class ConcreteImplementor2 implements Implementor{

    public void operation() {
        // TODO Auto-generated method stub
        System.out.println(ConcreteImplementor2.class + ": operation function");
        //System.out.println("Thing");
    }

}
bubuko.com,布布扣
bubuko.com,布布扣
package com.javadesignpattern.Bridge;

public abstract class Abstraction {
    
    Implementor impl;
    
    public Abstraction(Implementor impl){
        this.impl = impl;
    }
    
    public void operation(){
        impl.operation();
        
        System.out.println(Abstraction.class + " : operation function");
    }

}
bubuko.com,布布扣
bubuko.com,布布扣
package com.javadesignpattern.Bridge;

public class RedefinedAbstraction extends Abstraction {

    public RedefinedAbstraction(Implementor impl) {
        super(impl);
        // TODO Auto-generated constructor stub
    }
    
    public void operation(){
        super.operation();
        System.out.println(RedefinedAbstraction.class + " : operation function");
        //System.out.println("Car");
    }


}
bubuko.com,布布扣
bubuko.com,布布扣
package com.javadesignpattern.Bridge;

public class Client {
    
    public static void main(String[] args){
        Abstraction abs = new RedefinedAbstraction(new ConcreteImplementor1());
        abs.operation();
    }

}
bubuko.com,布布扣

在网上看到一个例子解释这个的,我觉得蛮好的,mark一下:http://alaric.iteye.com/blog/1918381

 

 

《java与模式》里面,讲到的jdbc驱动器的例子。drivermanager根据url(定义响应的数据库的url)得到具体的实现。

设计模式(十一) : 结构型模式--桥梁模式,布布扣,bubuko.com

设计模式(十一) : 结构型模式--桥梁模式

标签:des   c   style   class   blog   code   

原文地址:http://www.cnblogs.com/ChristyorRuth/p/3763546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!