08-桥接模式
08-桥接模式
1.桥接模式
/**
* 桥接模式可以将M*N的继承关系简化为M+N中组合关系。
* 如汽车Car的天窗SunProof有M中选择,轮毂Hub有N中选择,
* 如果使用继承则需要M*N中继承关系,但是通过组合可以简化为M+N中组合关系。
*/
public class Car {
private SunProof sunProof;
private Hub hub;
public Car(SunProof sunProof, Hub hub) {
this.sunProof = sunProof;
this.hub = hub;
}
}
// 汽车天窗
class SunProof {
}
// 汽车轮毂
class Hub {
}
2.桥接模式总结
-
<<设计模式:可复用面向对象软件的基础>>一书中对桥接模式的定义:将抽象和实现解耦,让它们可以独立变化。
-
桥接模式更通俗易懂的定义:一个类存在两个(或多个)独立变化的维度,可以通过组合的方式,让这个类在两个(多个)维度上可以独立扩展。
-
桥接模式可以将M*N中不同的选择方案,通过组合的方式简化为M+N中组合。
-
日志框架SLF4J有三个核心的概念:Logger、Appender和Formatter,分别表示三种不同的维护。Logger表示记录哪个类的日志;Appender表示日志输出到哪里;Formatter表示日志记录的格式。三个维度有多种不同的实现。利用桥接模式,可以将三种维度的任意一种实现组合在一起,就对应一种日志记录方式。同时三个维度可以独立变化,互不影响。