Java设计模式之java桥接模式详解
什么是Java桥接模式?
Java桥接模式是23种常用的设计模式之一,也称为桥梁模式。它是一个两层结构,其中底层定义了实现,而高层定义了抽象。抽象层通过委托调用实现层中的方法,以实现业务需求。这种模式可以将抽象部分与它的实现部分分离,使它们可以独立地变化。
应用场景
Java桥接模式常用于以下场景:
- 当需要避免使用由于多重继承导致的类层次结构扩展时;
- 当希望在抽象部分和实现部分之间建立一个稳定的联系,以便在两者之间随时切换时;
- 当希望改变一个已有的类的实现接口时;
- 当将实现部分与抽象部分分离开来,以便两者可以独立地进行变化时。
代码实现
抽象类
首先,我们需要定义一个抽象类,它会委托实现类中的方法来完成具体业务操作。抽象类定义了一个成员变量 im
,其类型为 Implementor
,表示实现类,以及一个抽象方法 operation()
。
public abstract class Abstraction {
protected Implementor im;
protected Abstraction(Implementor im) {
this.im = im;
}
public abstract void operation();
}
抽象类的具体实现类
我们接着定义一个具体实现类,它继承自上述定义的抽象类,并实现了 operation()
方法:
public class RefinedAbstraction extends Abstraction {
protected RefinedAbstraction(Implementor im) {
super(im);
}
@Override
public void operation() {
System.out.println("RefinedAbstraction.operation()");
im.operationImp();
}
}
其中,operation()
方法打印一条消息,然后通过委托调用实现类的 operationImp()
方法来完成业务操作。
实现类
接下来,我们定义一个实现类,它实现了 Implementor
接口:
public interface Implementor {
void operationImp();
}
public class ConcreteImplementorA implements Implementor {
@Override
public void operationImp() {
System.out.println("ConcreteImplementorA.operationImp()");
}
}
public class ConcreteImplementorB implements Implementor {
@Override
public void operationImp() {
System.out.println("ConcreteImplementorB.operationImp()");
}
}
实现类中实现了 operationImp()
方法,该方法打印一条消息。
示例
下面是一个使用 Java 桥接模式的示例:
Implementor impleA = new ConcreteImplementorA();
Abstraction abs = new RefinedAbstraction(impleA);
abs.operation();
Implementor impleB = new ConcreteImplementorB();
abs = new RefinedAbstraction(impleB);
abs.operation();
输出结果为:
RefinedAbstraction.operation()
ConcreteImplementorA.operationImp()
RefinedAbstraction.operation()
ConcreteImplementorB.operationImp()
该示例中,我们先创建了一个 ConcreteImplementorA
类型的实现类,并传递给 RefinedAbstraction
抽象类,然后调用 operation()
方法,输出了一条消息和 ConcreteImplementorA.operationImp()
方法的结果。
接着,我们创建了一个 ConcreteImplementorB
类型的实现类,并传递给 RefinedAbstraction
抽象类,再次调用 operation()
方法,输出了一条消息和 ConcreteImplementorB.operationImp()
方法的结果。
总结
Java桥接模式可将抽象部分与它的实现部分分离,使它们可以独立地变化。该模式通常用于需要独立变化不同的实现部分时,如操作系统平台和操作系统接口的变化等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java设计模式之java桥接模式详解 - Python技术站