核心要点:处理多继承结构,处理多维变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。
可以取代多层继承的方案。极大减少子类的个数,从而可以极大的减少子类的个数
极大的提高了系统可扩展性,在两个变化的维度中任意扩展一个维度,都不需要修改原系统。
代码:
package Bridge;
/**
* 品牌维度
*
* @author Administrator
*
*/
public interface Brand {
void sale();
}
class Lenovo implements Brand {
@Override
public void sale() {
System.out.println("销售联想电脑");
}
}
class Dell implements Brand {
@Override
public void sale() {
System.out.println("销售戴尔电脑");
}
}
package Bridge;
/**
* 电脑类型维度
*
* @author Administrator
*
*/
public class Computer {
protected Brand brand;
public Computer(Brand b) {
this.brand = b;
}
public void sale() {
brand.sale();
}
}
class Desktop extends Computer {
public Desktop(Brand b) {
super(b);
}
@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}
class Laptop extends Computer {
public Laptop(Brand b) {
super(b);
}
@Override
public void sale() {
super.sale();
System.out.println("销售笔记本");
}
}
package Bridge;
public class Client {
public static void main(String[] args) {
// 销售联想笔记本电脑
Computer c = new Laptop(new Lenovo());
c.sale();
}
}