多维度分解对象,将继承变为关联
abstract class Computer {
public abstract void type();
}
interface Brand {
void sale();
}
class Desktop extends Computer {
private Brand brand;
public Desktop(Brand brand) {
this.brand = brand;
}
@Override
public void type() {
System.out.print("台式机-->");
brand.sale();
}
}
class NoteBook extends Computer {
private Brand brand;
public NoteBook(Brand brand) {
this.brand = brand;
}
@Override
public void type() {
System.out.print("笔记本-->");
brand.sale();
}
}
class Lenovo implements Brand {
@Override
public void sale() {
System.out.println("联想");
}
}
class Dell implements Brand {
@Override
public void sale() {
System.out.println("戴尔");
}
}
/**
* 桥接模式
*/
public class Bridge {
public static void main(String[] args) {
Brand brand = new Lenovo();
Computer computer = new Desktop(brand);
computer.type();
Brand brand1 = new Dell();
Computer computer1 = new NoteBook(brand1);
computer1.type();
Computer computer2 = new Desktop(brand1);
computer2.type();
}
}