23种设计模式桥连模式Bridge

时间:2022-11-04 12:12:17


重点内容
1.什么是桥梁模式
2.哪些地方用到桥梁模式
3.桥梁模式的优点

桥梁模式:(bridge)又称桥接模式,属于结构型。主要考虑对象结构,对象之间的依赖关系等

通用类图:

23种设计模式桥连模式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)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。