天天看点

23种设计模式桥连模式Bridge

重点内容

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());
  }

}