桥接模式
设计原则:遵循单一职责、迪米特、开闭原则,体现功能复用
常用场景:一个对象有多个维度的变化,需要将这些维度抽离出来,让其独立变化
使用概率:20%
复杂度:中高
变化点:维度的扩展与增加
选择关键点:是否可以将对象拆分成多个不相关的维度
逆鳞:无
主要思想:
桥接类 实际也相当于一个组合类,该类持有不同接口或抽象类的对象,使用时赋予不同的子类
说是桥就是一个连接
比如 接口1 实现类11 实现类12
接口2 实现类21 实现类22
桥持有接口1、2 那么就桥接实现11、21或11、22等
public interface MyInterface1 {
public void do1();
}
public interface MyInterface2 {
public void do2();
}
public class MyImplement11 implements MyInterface1{
@Override
public void do1() {
System.out.println("11");
}
}
public class MyImplement12 implements MyInterface1 {
@Override
public void do1() {
System.out.println("12");
}
}
public class MyImplement21 implements MyInterface2{
@Override
public void do2() {
System.out.println("21");
}
}
public class MyImplement22 implements MyInterface2 {
@Override
public void do2() {
System.out.println("21");
}
}
public class MyBridge {
//桥接 接口1、2的实现类,赋值不同实现类,桥连接就改变了
private MyInterface1 interface1;
private MyInterface2 interface2;
public void dosomething(){
interface1.do1();
interface2.do2();
};
public void setInterface1(MyInterface1 interface1) {
this.interface1 = interface1;
}
public void setInterface2(MyInterface2 interface2) {
this.interface2 = interface2;
}
}