设计模式之适配器模式

2023-07-17  本文已影响0人  Tinyspot

1. 适配器模式(Adapter Pattern)

1.1 日常生活场景

1.2 组成部分

2. 两种实现方式

2.1 类适配器

image.png
public interface Target {
    String service(String param);
}

public class Adaptee {
    public String execute(String param) {
        return "Adaptee@" + param;
    }
}
public class Adapter extends Adaptee implements Target {
    @Override
    public String service(String param) {
        String execute = super.execute(param);
        // do something
        return "do something: " + execute;
    }
}

测试代码:

@Test
public void test() {
    Target target = new Adapter();
    String test = target.service("test");
    System.out.println(test);
}

2.2 对象适配器

image.png
public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public String service(String param) {
        String execute = adaptee.execute(param);
        // do something
        return "do something: " + execute;
    }
}

测试代码:

@Test
public void test() {
    Target target = new Adapter(new Adaptee());
    String test = target.service("test");
    System.out.println(test);
}

3. 应用

3.1 Spring MVC中的HandlerAdapter适配器

HandlerAdapter
public class DispatcherServlet extends FrameworkServlet {
  protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // ...
    ModelAndView mv = null;
    mappedHandler = getHandler(processedRequest);
    HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
    mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
    // ...
  }

  protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {
    // ...
  }

}
上一篇 下一篇

猜你喜欢

热点阅读