A1 A2 与 B1 B2 组合
通常情况下
定义A接口或抽象类,A1 A2实现或继承A,然后A1B1和A1B2继承A1,A2B1和A2B2继承A2,各自输出。这样做关联关系是强关联,桥接模式将抽象化和实现化解耦(分离),即将强关联转成弱关联。
//抽象化角色
public abstract class A {
B b;//A不能为接口,不然这里定义属性为final类型
public A(B b) {
this.b = b;
}
abstract void printA(String msg);
}
public class A1 extends A{
public A1(B b) {
super(b);
}
public void printA(String msg) {
b.printB("A1 " + msg);
}
}
public class A2 extends A{
public A2(B b) {
super(b);
}
@Override
void printA(String msg) {
b.printB("A2 " + msg);
}
}
//实现化角色
public interface B {
void printB(String msg);
}
public class B1 implements B{
@Override
public void printB(String msg) {
System.out.println("B1" + msg);
}
}
public class B2 implements B{
@Override
public void printB(String msg) {
System.out.println("B2" + msg);
}
}
public class Test {
public static void main(String[] args) {
B b1 = new B1();
B b2 = new B2();
A a = new A1(b1);
a.printA("a1b1");
a = new A1(b2);
a.printA("a1b2");
a = new A2(b1);
a.printA("a2b1");
a = new A2(b2);
a.printA("a2b2");
}
}
输出:
B1A1 a1b1
B2A1 a1b2
B1A2 a2b1
B2A2 a2b2