1. 原理
多个独立的功能单元(打开导航openMap、开车drive)都统一到driverCar这个方法内部
2. 代码
/**
* @author: pp_lan on 2020/3/23.
*/
public class BrigeDemo {
interface Car {
void drive();
}
class Jeep implements Car {
@Override
public void drive() {
System.out.println("驾驶Jeep出发");
}
}
class Phone {
public void openMap() {
System.out.println("打开导航");
}
}
abstract class Person {
String name;
private Car car;
private Phone phone;
public Person(String name, Car car, Phone phone) {
this.car = car;
this.name = name;
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void driveCar() {
System.out.println(this.name + "上车");
this.phone.openMap();
this.car.drive();
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
class Man extends Person {
public Man(String name, Car car, Phone phone) {
super(name, car, phone);
}
}
public static void main(String[] args) {
BrigeDemo bridge = new BrigeDemo();
Car jeep = bridge.new Jeep();
Phone phone = bridge.new Phone();
Man man = bridge.new Man("老李", jeep, phone);
man.driveCar();
}
}
3. 执行
Connected to the target VM, address: '127.0.0.1:64010', transport: 'socket'
老李上车
打开导航
驾驶Jeep出发
Disconnected from the target VM, address: '127.0.0.1:64010', transport: 'socket'