重點内容
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());
}
}