桥接模式(Bridge)

来源:互联网 发布:淘宝上筒子钱真假 编辑:程序博客网 时间:2024/05/19 03:17
桥接模式用处很多,最熟知的就是JDBC的使用场景,大家都知道。我们切换数据源的时候只需要改动驱动名称,连接信息,用户名,密码信息就可以切换数据库了。

1.意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
2.特点
1.把对象的创建与应用分离,交给调用者去根据具体情况创建不同的类。
2.通过桥接类去调用对象的具体方法。
3.UML类图
桥接模式类图
JDBC的类图如下
这里写图片描述

4.代码实现

/** * 资源接口 * 定义具体方法 */public interface Eat {    void eatChicken();    void eatFish();}/** * 资源类的具体实现类 筷子 * 实现资源接口的方法 */public class Chopsticks implements Eat {    @Override    public void eatChicken() {        System.out.println("用筷子吃鸡");    }    @Override    public void eatFish() {        System.out.println("用筷子吃鱼");    }}/** * 资源类的具体实现类 叉子 * 实现资源接口的方法 */public class Fork  implements Eat {    @Override    public void eatChicken() {        System.out.println("用叉子吃鸡");    }    @Override    public void eatFish() {        System.out.println("用叉子吃鱼");    }}/** * 资源类的具体实现类 勺子 * 实现资源接口的方法 */public class Spoon  implements Eat {    @Override    public void eatChicken() {        System.out.println("用勺子吃鸡");    }    @Override    public void eatFish() {        System.out.println("用勺子吃鱼");    }}/** * 桥接类(抽象) * 1,持有资源类 * 2,定义与资源类相同的方法 */public abstract class Birdge {    private Eat eat;    public abstract void eatChicken();    public abstract void eatFish();    public Birdge(Eat eat) {        this.eat = eat;    }    public Eat getEat() {        return eat;    }    public void setEat(Eat eat) {        this.eat = eat;    }}/** * 桥接类的具体实现类 * 1,对具体的资源类赋值 * 2,调用具体的资源类方法 */public class MyBirdge extends Birdge {    public MyBirdge(Eat eat) {        super(eat);    }    @Override    public void eatChicken() {        getEat().eatChicken();    }    @Override    public void eatFish() {       getEat().eatFish();    }}public class Client {    public static void main(String[] args) {        //根据具体情况 创建具体的 资源实体类        Eat eat = new Fork();        //将资源类赋值给具体桥接类        Birdge birdge = new MyBirdge(eat);        //调用具体方法        birdge.eatFish();    }}
原创粉丝点击