桥接模式(Bridge)

桥接模式用处很多,最熟知的就是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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值