您的位置:首页 > 编程语言 > Java开发

java-设计模式(结构型)-【桥接模式】

2015-04-17 11:44 459 查看
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.利用桥接模式获取数据,数据源来自于不同的数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: