重点内容
1.什么是桥梁模式
2.哪些地方用到桥梁模式
3.桥梁模式的优点
桥梁模式:(bridge)又称桥接模式,属于结构型。主要考虑对象结构,对象之间的依赖关系等
通用类图:

哪些地方用到桥梁模式?
由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。这样可以考虑到桥接模式
Eg:通过cpu 和品牌可以判定电脑的优劣。那么三者之间的关系可以使用桥接模式进行描述(这样说有些牵强)
下面贴上源码:
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// intel
IcpuAvaliable iAvaliable = new IntelCpuIml();
AbComputerBrank abComputerBrank = new MacComputer(iAvaliable);
abComputerBrank.checkComputer();
iAvaliable = new AmdCpuIml();
abComputerBrank = new MacComputer(iAvaliable);
abComputerBrank.checkComputer();
}
}
实现:
public interface IcpuAvaliable {
/**
* cpu 能力
*/
public String cpuAvaliable();
}
public class IntelCpuIml implements IcpuAvaliable {
@Override
public String cpuAvaliable() {
return "intel 性能比较高";
}
}
public class AmdCpuIml implements IcpuAvaliable {
@Override
public String cpuAvaliable() {
return "Amd 性能一般";
}
}
抽象:
/**
* 抽象部分
* @author weichyang
*
*/
public abstract class AbComputerBrank {
public IcpuAvaliable icpuAvaliable;
public AbComputerBrank(IcpuAvaliable icpuAvaliable) {
this.icpuAvaliable = icpuAvaliable;
}
/**
* 品牌维度
*/
public abstract void checkComputer();
}
public class LenoveComputer extends AbComputerBrank {
public LenoveComputer(IcpuAvaliable icpuAvaliable) {
super(icpuAvaliable);
}
@Override
public void checkComputer() {
System.out.println("华硕笔记本CPU性能" + super.icpuAvaliable.cpuAvaliable());
}
}
public class MacComputer extends AbComputerBrank {
public MacComputer(IcpuAvaliable icpuAvaliable) {
super(icpuAvaliable);
}
@Override
public void checkComputer() {
System.out.println("Mac电脑的cpu" + super.icpuAvaliable.cpuAvaliable());
}
}
Ok:那么桥梁模式的优点,不同对象间的组合产生不同的结果,将抽象和实现进行分离,当然,如果要扩展功能的,只要实现相应的接口,继承对应的类。就可以
它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。