桥梁模式的用意是“将抽象化与实现化脱耦,使得二者可以独立地变化”。
示例
1、结构图
2、java代码
Abstraction抽象类:
package bridge.abstraction;
import bridge.implementor.Implementor;
public abstract class Abstraction {
protected Implementor imp;
public void operation(){
imp.operationImp();
}
}
public abstract class Abstraction {
protected Implementor imp;
public void operation(){
imp.operationImp();
}
}
RefinedAbstraction类:
package bridge.abstraction;
import bridge.implementor.Implementor;
public class RefinedAbstraction extends Abstraction{
public RefinedAbstraction(Implementor imp){
this.imp = imp;
}
public void operation(){
System.out.println("================START===================");
super.operation();
System.out.println("================STOP===================");
}
}
public class RefinedAbstraction extends Abstraction{
public RefinedAbstraction(Implementor imp){
this.imp = imp;
}
public void operation(){
System.out.println("================START===================");
super.operation();
System.out.println("================STOP===================");
}
}
Implementor抽象类:
package bridge.implementor;
abstract public class Implementor {
abstract public void operationImp();
}
abstract public void operationImp();
}
ConcreteImplementor类:
package bridge.implementor;
public class ConcreteImplementor extends Implementor{
public void operationImp() {
System.out.println("ConcreteImplementor operate......");
}
}
public void operationImp() {
System.out.println("ConcreteImplementor operate......");
}
}
Client类:
package bridge;
import bridge.abstraction.Abstraction;
import bridge.abstraction.RefinedAbstraction;
import bridge.implementor.ConcreteImplementor;
import bridge.implementor.Implementor;
public class Client {
public static void main(String args[]){
Implementor imp = new ConcreteImplementor();
Abstraction abstraction = new RefinedAbstraction(imp);
abstraction.operation();
}
}
import bridge.abstraction.RefinedAbstraction;
import bridge.implementor.ConcreteImplementor;
import bridge.implementor.Implementor;
public class Client {
public static void main(String args[]){
Implementor imp = new ConcreteImplementor();
Abstraction abstraction = new RefinedAbstraction(imp);
abstraction.operation();
}
}