将抽象和实现解耦,使得两者可以独立地变化。 是一种结构型设计模式。
public interface Brand {
void open();
void close();
void call();
}
public class Oppo implements Brand {
@Override
public void open() {
System.out.println("oppo open");
}
@Override
public void close() {
System.out.println("oppo close");
}
@Override
public void call() {
System.out.println("oppo call");
}
}
public class Vivo implements Brand {
@Override
public void open() {
System.out.println("vivo open");
}
@Override
public void close() {
System.out.println("vivo close");
}
@Override
public void call() {
System.out.println("vivo call");
}
}
public abstract class Phone {
private Brand brand;
public Phone(Brand brand) {
this.brand = brand;
}
protected void open() {
brand.open();
}
protected void close() {
brand.close();
}
protected void call() {
brand.call();
}
}
//折叠式手机类
public class FoldedPhone extends Phone {
public FoldedPhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println("打开手机");
}
public void close() {
super.close();
System.out.println("关闭手机");
}
public void call() {
super.call();
System.out.println("放电话");
}
}
public class Client {
public static void main(String[] args) {
Phone oppo = new FoldedPhone(new Oppo());
oppo.open();
oppo.call();
oppo.close();
Phone vivo = new FoldedPhone(new Vivo());
vivo.open();
vivo.call();
vivo.close();
}
}
桥接模式注意事项