桥接模式介绍
桥接模式和多继承的思路是一致的,都是想构造出有多性质的对象
但多继承方案违背了单一职责原则,桥接模式减少了子类的个数,用组合的方式取代多继承方案中的继承的方式
比如:
我想要将小米笔记本写成对象,如果按一般思路写一个笔记本类继承电脑类,小米笔记本类继承笔记本类就显得繁琐,且不易扩展
图示:
但如果我们抽取一下信息:小米笔记本有两个性质,一个是电脑,一个是品牌
我们把品牌类作为电脑类的属性,这样就算以后加了一种新的电脑类型,该类型也能拿到所有的品牌
品牌类:
public interface Brand {
void getBrandInfo();
}
public class Apple implements Brand {
@Override
public void getBrandInfo() {
System.out.print("苹果");
}
}
public class Lenovo implements Brand {
@Override
public void getBrandInfo() {
System.out.print("联想");
}
}
电脑类:
public abstract class Computer {
public Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
public void getComputerInfo() {
brand.getBrandInfo();
}
}
class Desktop extends Computer {
public Desktop(Brand brand) {
super(brand);
}
@Override
public void getComputerInfo() {
super.getComputerInfo();
System.out.println("台式");
}
}
class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
}
@Override
public void getComputerInfo() {
super.getComputerInfo();
System.out.println("笔记本");
}
}
客户端:
public static void main(String[] args) {
Computer computer = new Laptop(new Apple());
// 打印出苹果笔记本
computer.getComputerInfo();
}