java-设计模式(结构型)-【桥接模式】
1.桥接模式(Bridge)
定义:桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。
桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化。
使用场景:出现两个类或以上个类时,通过桥接模式来让它们相关联,而保持自身的变化
2.举例:咖啡杯(大的,小的)和饮料(水,牛奶)
有两个类:咖啡杯和饮料。
使用桥接模式:让不同的咖啡杯可以装不同的饮料。
2.1 图解

2.2 饮料
//饮料接口:
public interface Fluid {
void pourFluid();
}
//牛奶类
class Milk implements Fluid
{
@Override
public void pourFluid() {
// TODO Auto-generated method stub
System.out.println("倒牛奶");
}
}
//水类
class Water implements Fluid
{
@Override
public void pourFluid() {
// TODO Auto-generated method stub
System.out.println("倒水");
}
}
2.3 桥接类
//桥接类:持有饮料接口,并可以设置不同的饮料
public class Bridge implements Fluid{
private Fluid fluid=null;
@Override
public void pourFluid() {
// TODO Auto-generated method stub
fluid.pourFluid();
}
public Fluid getFluid() {
return fluid;
}
public void setFluid(Fluid fluid) {
this.fluid = fluid;
}
}
2.4 咖啡类
//咖啡:持有桥接类
public abstract class Coffee {
private Bridge bridge=new Bridge();
public abstract void pourCoffee();
public Bridge getBridge() {
return bridge;
}
public void setBridge(Bridge bridge) {
this.bridge = bridge;
}
}
//大的咖啡杯
class LargeCoffee2 extends Coffee
{
@Override
public void pourCoffee() {
// TODO Auto-generated method stub
System.out.println("大的咖啡杯");
//调用桥接类获取饮料源
getBridge().pourFluid();
}
}
class SmallCoffee2 extends Coffee
{
@Override
public void pourCoffee() {
// TODO Auto-generated method stub
System.out.println("小的咖啡杯");
//调用桥接类获取饮料源
getBridge().pourFluid();
}
}
2.5 测试
public class Test {
public static void main(String[] args) {
//设置两种饮料
Fluid milk=new Milk();
Fluid water=new Water();
//设置咖啡杯
Coffee l2=new LargeCoffee2();
//桥接桥
Bridge bd=new Bridge();
bd.setFluid(milk);
//为咖啡杯设置桥
l2.setBridge(bd);
//倒咖啡:
l2.pourCoffee();
//重新设置饮料源:
bd.setFluid(water);
l2.pourCoffee();
}
}
2.6 运行结果
大的咖啡杯 倒牛奶 大的咖啡杯 倒水
3.利用桥接模式获取数据,数据源来自于不同的数据库

浙公网安备 33010602011771号