文章目录
9、桥接模式
定义:将抽象部分与它实现部分分离,是它们都可以独立地变化。
桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量。
**应用场景:**一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时,可以使用桥接模式。
举例:电脑品牌有苹果、联想,电脑的种类有台式机、笔记本,所以电脑是两个维度,这两个维度可以扩展,比如加一个戴尔品牌等。
那么我们可以使用桥接模式来低耦合。如下图:当我们需要扩展一个品牌或者电脑类型时只需要横向扩展。
代码如下:
//品牌
public interface Brand {
public void info();
}
//苹果品牌
public class Apple implements Brand {
@Override
public void info() {
System.out.print("苹果");
}
}
//联想品牌
public class Lenovo implements Brand {
@Override
public void info() {
System.out.print("联想");
}
}
//电脑类型
public abstract class Computer {
protected Brand brand; //这里需要protected修饰,以便子类可以使用
public Computer(Brand brand) {
this.brand = brand;
}
public abstract void info();
}
//台式机
public class Desktop extends Computer {
public Desktop(Brand brand) {
super(brand);
}
@Override
public void info() {
brand.info();
System.out.println("台式机");
}
}
//笔记本电脑
public class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
}
@Override
public void info() {
brand.info();
System.out.println("笔记本");
}
}
//测试
public class Text {
public static void main(String[] args) {
Computer computer = new Desktop(new Apple());
computer.info(); //输出 苹果台式机
computer = new Laptop(new Lenovo());
computer.info(); //输出 联想笔记本
}
}
**桥接模式可以和适配器模式一起使用。**设计模式都是可以相互使用的。