设计模式-桥接模式

1.UML类图


拿手机来举个例子好理解一些,Abstraction就是手机品牌,RefinedAbstraction就是某个具体的手机品牌如:三星,苹果等。Implementor就是手机软件,ConcreteImplementorA是三星手机通讯录,ConcreteImplentorB是苹果手机游戏。将手机品牌这个抽象和手机软件这个实现分离开,让它们独立变化,这样的耦合很松散。比如现在又要新增一个华为手机的通讯录实现,只需要新建一个类继承Abstraction类,新建一个华为通讯录实现类继承Implementor类,在客户端使用时,实例化一个华为手机实例,再实例化一个华为手机通讯录实例,将其设为华为手机的成员变量,在调用华为手机的相应操作即可。这样不用改动之前的任何类就可以实现新需求。

2.示例代码

抽象。

public abstract class Abstraction {
    protected Implementor implementor;

    public void setImplementor(Implementor implementor) {
        this.implementor = implementor;
    }

    public abstract void operation();

}

被提炼的抽象。

public class RefinedAbstraction extends Abstraction {
    @Override
    public void operation() {
        implementor.operation();
    }

}

实现。

public abstract class Implementor {
    public abstract void operation();

}

具体实现。

public class ConcreteImplementorA extends Implementor {
    @Override
    public void operation() {
        System.out.println("具体实现A的方法执行");
    }

}

public class ConcreteImplementorB extends Implementor {
    @Override
    public void operation() {
        System.out.println("具体实现B的方法执行");
    }

}

客户端。

public class Client {
    public static void main(String[] args) {
        Abstraction abstraction = new RefinedAbstraction();
        abstraction.setImplementor(new ConcreteImplementorA());
        abstraction.operation();

        abstraction.setImplementor(new ConcreteImplementorB());
        abstraction.operation();
    }

}

3.特点

桥接模式将抽象部分与它的实现部分分离,使他们都可以独立地变化。也就是实现系统有可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值