java设计模式之桥接模式(Bridge)

网友投稿 219 2023-06-20


java设计模式之桥接模式(Bridge)

概述

桥接模式一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。

桥接模式的做法是把变化的部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。

UML结构图

代码示例

package interview;

interface Implementor{

void operationImpl();

}

abstract class Abstraction{

protected Implementor implementor;

public Abstraction(Implementor implementor){

this.implementor = implementor;

}

public void operation(){

implementor.operationImpl();

}

}

class ConcreteImplementorA implements Implementor {

@Override

public void operationImpl() {

System.out.println("具体实现A");

}

}

class ConcreteImplementorB implements Implementor {

@Override

public void operationImpl() {

System.out.println("具体实现B");

}

}

class RefinedAbstraction extends Abstraction{

public RefinedAbstraction(Implementor implementor) {

super(implementor);

}

public void otherOperation(){

System.out.println("其他操作");

}

}

public class MainTest {

public static void main(String arg[]) {

Implementor implementor = new ConcreteImplementorA();

RefinedAbstraction abstraction = new RefinedAbstraction(implementor);

abstraction.operation();

abstraction.otherOperation();

}

}

使用场景

1.如果你不希望在抽象和实现部分采用固定的绑定关系,可以采用桥接模式,来把抽象和实现部分分开,然后在程序运行期间来动态的设置抽象部分需要用到的具体实现,还可以动态切换具体的实现。

2.如果出现抽象部分和实现部分都应该可以扩展的情况,可以采用桥接模式,让抽象部分和实现部分可以独立的变化,从而可以灵活的进行单独扩展,而不是搅在一起,扩展一边可以影响另一边。

3.如果希望实现部分的修改,不会对客户产生影响,可以采用桥接模式,客户是面向抽象的接口在运行,实现部分的修改,可以独立于抽象部分,也就不会对客户产生影响了,也可以说对客户是透明的。

4.如果采用继承的实现方案,会导致产生很多子类,对于这种情况,可以考虑采用桥接模式,分析功能变化的原因,看看是否能分离成不同的维度,然后通过桥接模式来分离他们,从而减少子类的数目。

如果一个系统需要在构建的抽象化yZNHgIQBsW角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。

抽象化角色和具体化角色都应该可以被子类扩展。在这种情况下,桥接模式可以灵活地组合不同的抽象化角色和具体化角色,并独立化地扩展。

设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java设计模式之适配器模式(Adapter)
下一篇:java实现统计字符串中字符及子字符串个数的方法示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~