桥接模式
demo
public class BridgeDemo {
public static void main(String[] args) {
RenderService renderService = new RenderService(new DrawApi() {
@Override
public void draw() {
System.out.println("draw red circle");
}
});
renderService.draw();
RenderService renderService1 = new RenderService(() ->
System.out.println("draw blue triangle")
);
renderService1.draw();
}
}
class RenderService {
private DrawApi drawApi;
RenderService(DrawApi drawApi) {
this.drawApi = drawApi;
}
public void draw() {
drawApi.draw();
}
}
interface DrawApi {
void draw();
}
桥接模式的核心
- 外层服务面向接口编程
- 真正使用外层服务时,根据注入的接口实现类,决定采用哪个实现方法
桥接模式与策略模式
- 桥接模式中,外层服务不需要知道接口实现类的存在与区别。仅在使用外层服务时,由调用方注入接口实现类
- 策略模式中,需要注入接口的所有实现类,根据策略选择相应的实现类