设计模式——桥接模式原理及代码实现

桥接模式是一种设计模式,旨在将抽象部分与其实现部分分离,使得两者可以独立变化。通过使用合成/聚合而非继承来减少耦合,遵循合成/聚合复用原则。在代码实现中,包括Implementor接口、ConcreteImplementorA和B实现类、Abstraction抽象类以及RefinedAbstraction细化抽象类。测试类展示了如何在运行时动态切换不同实现,以展示桥接模式的应用。
摘要由CSDN通过智能技术生成

一、简介

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

当有多个维度划分关联时,尽量用合成/聚合的关系,尽可能少的使用继承关系,减少它们之间的耦合。因为继承关系是强依赖,当父类有变化时,子类就要随之变化。

合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用类继承。

二、结构图

三、代码实现

Implementor:

public interface Implementor {
    void operation();
}

 ConcreteImplementorA:Implementor的实现类。

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

 ConcreteImplementorB:Implementor的实现类。

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

Abstraction: 

public abstract class Abstraction {
    protected Implementor implementor;

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

    public abstract void operation();
}

 RefinedAbstraction:Abstraction的实现类

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

 测试类:

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();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值