zoukankan      html  css  js  c++  java
  • 适配器模式

     1.适配器模式解决的问题

    • 解决一个类实现接口时无需实现接口的中所有方法。
    1. 接口的实现类一般实现接口就要实现所有方法,但是有时候并不需要亲自实现所有方法,所以就出现了矛盾。
    2. 适配器模式 使用一个抽象类去实现接口的部分方法,其他方法留给继承该抽象类的子类去实现,这样一来该子类就可以选择实现接口的部分方法。
    3. 注:适配器模式下 子类还是拥有 接口的所有方法(继承思想),子类是抽象类的子类也是接口的实现类。

    2.适配器模式实例

    • web中 servlet就使用到了适配器模式
    • 自定义servlet有时并不需要实现servlet接口的所有方法,一般只关注service方法而其他的方法并不是一定需要的。
    • 抽象类GenericServlet就是起到了适配器作用
    • Servlet接口

    • 抽象类 GenericServlet  实现了Servlet  但是除service方法外其方法使用频率都不高,所以其他方法做了空实现。

    service方法被定义为抽象方法,如果要具体实现具有某个功能的servlet就必须实现service方法

    • 实现具有Http请求处理功能的servlet即抽象类HttpServlet

    HttpServlet  可以处理HTTP所有请求

    一般我们自定义的servlet只需要 重写doGet doPost方法即可.

    如果不重写会调用父类HttpServlet中的方法,这样会导致报405 或者 400  错误

     3.总结

    • 某个接口为了满足很多需求,会定义很多方法;但是这些所有的方法并不是某个需求就都需要,但是这个需求也需要把接口中的

      所有方法都实现出来,这样就造成了这个需求的类中出现很多无用方法;处理问题的方式时编写一个适配器来专门为这个需求服务;

      这个适配器类的主要功能就是把这个需求不使用的其它方法都实现出来,这个需求需要使用的方法直接在这个需求的继承类中实现。

  • 相关阅读:
    GAC的理解及其作用 [转]
    Binding Policy in .NET/ Assembly search order (Bin/GAC)
    Batch update
    Table-Valued Parameters in SQL Server 2008 (ADO.NET)
    EXT的bug 布局border 和 grid的cellediting
    ext 的controller中的refs的使用方法
    Ext 修改内容之后 不做任何动作 再次修改时的数据是原来第一次修改前的数据
    php 与mysql 数据库
    前端开发和后端开发
    http 你造吗?
  • 原文地址:https://www.cnblogs.com/mibloom/p/10277260.html
Copyright © 2011-2022 走看看