一、什么是桥接模式?
桥接模式(Bridge)定义:将抽象部分与它的实现部分分离,使它们都可以独立的变化。这里的实现指的是抽象类和它的派生类用来实现自己的对象。
类型:结构型模式
顺口溜:适装桥组享代外
二、桥接模式UML
三、JAVA代码实现
package com.amosli.dp.bridge;
public abstract class Abstraction {
abstract void operation(Implementor imp);
}
package com.amosli.dp.bridge;
public class RefinedAbstraction extends Abstraction {
@Override
void operation(Implementor imp) {
imp.operationImp();
System.out.println("refined impl..");
}
}
package com.amosli.dp.bridge;
public abstract class Implementor {
abstract void operationImp();
}
package com.amosli.dp.bridge;
public class ConcreteImplementorA extends Implementor {
@Override
void operationImp() {
System.out.println("impl A...");
}
}
package com.amosli.dp.bridge;
public class Client {
public static void main(String[] args) {
Abstraction abstraction = new RefinedAbstraction();
abstraction.operation(new ConcreteImplementorA());
}
}
四、使用场景
在以下的情况下应当使用桥梁模式:
1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
2.设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。
3.一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。
4.虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。
总结:
Bridge模式是一个非常有用的模式,也非常复杂,它很好的符合了开放-封闭原则和优先使用对象,而不是继承这两个面向对象原则。
五、源码地址
本系列文章源码地址,https://github.com/amosli/dp 欢迎Fork & Star !!