接口型模式之Bridge(桥接)模式

1.如果你期望将实现与抽象相分离以便二者独立演化,可使用Bridge(桥接)模式
2.举例

//抽象平台
public abstract class ImpLog {
     public abstract void execute(String msg);
}
//java平台实现类
public class JImpLog extends ImpLog {
    public void execute(String msg) {
        System.out.println("JImpLog:"+msg);
    }
}
//net平台实现类
public class NImpLog extends ImpLog {
    public void execute(String msg) {
        System.out.println("NImpLog:"+msg);
    }
}
//桥接抽象类
public abstract class Log {
    public ImpLog implementor;

    public  void write(String log){
        implementor.execute(log);
    }
}
//桥接到java平台实现类
public class TextFileLog extends Log{
    public TextFileLog(JImpLog jImpLog){
        implementor = jImpLog;
    }
    public void write(String log) {
        implementor.execute(log);
    }
}
//桥接到net平台实现类
public class DatabaseLog extends Log {
    public DatabaseLog(NImpLog nImpLog){
        implementor = nImpLog;
    }
    public void write(String log) {
        implementor.execute(log);
    }
}
//测试类:根据使用的具体log来调用具体的平台
public class Client {
    public static void main(String[] args) {
        Log dblog = new DatabaseLog(new NImpLog());
        dblog.write("NET平台下的Database Log");

        Log txtlog = new TextFileLog(new JImpLog());
        txtlog.write("Java平台下的Text File Log");
    }
}
//结果
NImpLog:NET平台下的Database Log
JImpLog:Java平台下的Text File Log

3.总结:Bridge模式最常见的例子就是驱动程序,比如数据库驱动程序。Bridge模式将抽象与其抽象方法的实现相分离。Bridge模式采用Adapter模式的类适配方式实现。
4.Adapter与Bridge的区别:
4.1引用人家大白话。
①Adapter 哇你是谁啊,滚。—几分钟后,化妆后。——–哇,是XX长耶,请进,请进。
原来在某个场合不行,现在行了
②Bridge 嗯,这个枪不错,据说,子弹有穿甲弹,散弹,好像还有小小小型核弹。
如果把枪和子弹绑在一起,那要多少种枪啊。在某种场合,枪是枪,行为是射出子弹,但子弹可以独立出来发展,使用时,只有枪和子弹再一起才行。
4.2引用专业话
Adapter:
将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.
我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口。
使用Adapter,在这两种接口之间创建一个混合接口
Bridge:
将抽象和行为划分开来,各自独立,但能动态的结合
在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处。
5.参考:http://www.2cto.com/kf/201404/293493.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值