设计模式之桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。
 
桥接模式的主要目的是将抽象与实现解耦,从而使得两者可以独立地进行扩展和修改,而不会相互影响。
 
在桥接模式中,存在一个抽象类持有一个实现类的引用。这样,抽象类的方法可以通过调用实现类的方法来完成具体的功能。
 
例如,假设有一个形状的抽象类  Shape  和一个颜色的抽象接口  Color  。 Shape  类持有一个  Color  对象的引用。这样,无论增加新的形状或者新的颜色,都不需要修改已有的代码,只需要新增相应的类即可。
 
桥接模式的优点包括:
 
1. 分离抽象和实现,提高系统的可扩展性和可维护性。
2. 减少类的数量,降低系统的复杂性。
 
它适用于以下场景:
 
1. 当一个类存在多个独立变化的维度时。
2. 当不希望在抽象和实现之间建立固定的绑定关系时。
 
以下是一个使用 Java 实现桥接模式的示例代码:

interface Implementor {

    void operationImpl();

}

 

class ConcreteImplementorA implements Implementor {

 

    @Override

    public void operationImpl() {

        System.out.println("Concrete Implementor A operation");

    }

}

 

class ConcreteImplementorB implements Implementor {

 

    @Override

    public void operationImpl() {

        System.out.println("Concrete Implementor B operation");

    }

}

 

abstract class Abstraction {

    protected Implementor implementor;

 

    public Abstraction(Implementor implementor) {

        this.implementor = implementor;

    }

 

    public abstract void operation();

}

 

class RefinedAbstraction extends Abstraction {

 

    public RefinedAbstraction(Implementor implementor) {

        super(implementor);

    }

 

    @Override

    public void operation() {

        implementor.operationImpl();

    }

}

 

public class BridgePatternExample {

    public static void main(String[] args) {

        Implementor implementorA = new ConcreteImplementorA();

        Abstraction abstractionA = new RefinedAbstraction(implementorA);

        abstractionA.operation();

 

        Implementor implementorB = new ConcreteImplementorB();

        Abstraction abstractionB = new RefinedAbstraction(implementorB);

        abstractionB.operation();

    }

}

在上述代码中, Implementor  是实现部分的接口, ConcreteImplementorA  和  ConcreteImplementorB  是具体的实现类。 Abstraction  是抽象部分的基类, RefinedAbstraction  是扩展的抽象类。通过将实现部分和抽象部分分离,桥接模式使得它们可以独立变化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值