bridge模式 java无处不桥接,比如我们写得 daoImpl ,到serverImpl才掉,桥接桥接,接口就是桥

1.桥接模式

  1. package com.example.demo.pattern.bridge;
  2. /**
  3. * @author chenchao
  4. * @date 2021/11/9
  5. */
  6. public class BridgePatternDemo {
  7. public static void main(String[] args) {
  8. Implementor implementor = new ConcreteImplementor();
  9. Abstraction abstraction = new RefinedAbstraction(implementor);
  10. abstraction.execute();
  11. // implementor可以认为是一个代码组件,包含了一个接口和一个实现类
  12. // abstraction可以认为是一个代码组件,包含了一个抽象类和一个子类
  13. // abstraction要调用implementor的接口
  14. // 在abstraction中包含了一个implementor的接口
  15. // 在abstraction调用implementor的时候,实际上是面向implementor接口去编程和调用的
  16. // 只不过我们会将implementor的实现类实例传入abstraction中
  17. // abstraction调用implementor就是基于一个桥去调用的
  18. // 不是说abstraction直接仅仅面向implementor实现类去编程的,面向implementor接口去编程的
  19. // 所以abstraction和implementor两个代码组件之间的桥,就是implementor接口
  20. // 这个一个代码组件面向另外一个代码组件的接口来编程,就是将那个接口作为一个桥
  21. // 使用了桥接的设计模式来编程
  22. // 桥接模式,都不需要运用,java之中,无处不桥接
  23. // 几乎所有的编程,都是面向接口去编程的
  24. }
  25. public interface Implementor {
  26. void execute();
  27. }
  28. public static class ConcreteImplementor implements Implementor {
  29. @Override
  30. public void execute() {
  31. System.out.println("执行了功能逻辑");
  32. }
  33. }
  34. public static abstract class Abstraction {
  35. protected Implementor implementor;
  36. public Abstraction(Implementor implementor) {
  37. this.implementor = implementor;
  38. }
  39. public abstract void execute();
  40. }
  41. public static class RefinedAbstraction extends Abstraction {
  42. public RefinedAbstraction(Implementor implementor) {
  43. super(implementor);
  44. }
  45. @Override
  46. public void execute() {
  47. implementor.execute();
  48. }
  49. }
  50. }

2.说明

所谓的桥接,就是搭建一个桥,让两个组件之间互相调用,可以通过桥来执行。因为有了桥,两个代码组件无论怎么修改,都互相没有影响。这个桥,实际上就是一个接口。所以说,java中,无处不桥接,只要你是面向接口编程,基本就是在桥接。