桥接模式
当系统有多个维度的独立变化的业务时,可以使用桥接模式将抽象和实现分离开,这样抽象和实现各自扩展不会有耦合。
应用场景
(1)java 实现虚拟机和平台无关性。将java和操作系统桥接起来。
(2)JDBC实现任意连接各种数据库。
不使用桥接时,是这样的:
使用了桥接是这样的:
public interface ComputerBrand {
void brand();
}
public abstract class ComputerType {
private ComputerBrand computerBrand;
public ComputerType(ComputerBrand computerBrand) {
this.computerBrand = computerBrand;
}
public void sale() {
computerBrand.brand();
}
}
public class AppleBrand implements ComputerBrand {
@Override
public void brand() {
System.out.println("苹果");
}
}
public class HuaweiBrand implements ComputerBrand {
@Override
public void brand() {
System.out.println("华为");
}
}
public class DesktopComputer extends ComputerType {
public DesktopComputer(ComputerBrand computerBrand) {
super(computerBrand);
}
@Override
public void sale() {
super.sale();
System.out.println("台式电脑");
}
}
public class NetoBookComputer extends ComputerType {
public NetoBookComputer(ComputerBrand computerBrand) {
super(computerBrand);
}
@Override
public void sale() {
super.sale();
System.out.println("笔记本");
}
}
public class BridgingPattern {
public static void main(String[] args) {
ComputerType computerType = new DesktopComputer(new AppleBrand());
computerType.sale();
ComputerType computerType1 = new NetoBookComputer(new HuaweiBrand());
computerType1.sale();
}
}
桥接模式的经典:jvm和系统通过桥接模式,实现了跨平台。