设计模式之适配器设计模式

适配器设计模式

主要解决:接口与接口实现类之间的矛盾。因为接口实现类有义务把接口中全部方法给实现,如果此时接口实现类,并不想把所有的方法给实现,那么就可以采用该设计模式。

主要模式与特征

  1. 使用抽象类分离了接口与【接口实现】
  2. 抽象类分摊接口中【接口实现类】不想实现的方法
  3. 使得【接口实现类】可以随意选择自己想实现的类
  4. 参考Servlet规范中GenericServlet

示例代码

public interface Housework {

    /**
     * 洗碗
     */
     void washDishes();
    /**
     * 玩耍
     */
    void play();
}
/**
 * 该设计模式主要解决:接口与接口实现类之间的矛盾
 * 因为接口实现类有义务把接口中全部方法给实现,
 * 如果此时接口实现类,并不想把所有的方法给实现,那么久可以采用该设计模式
 */
public abstract class Brother implements Housework {

    /**
     * 不受实现类欢迎的方法
     */
    @Override
    public void washDishes() {
        System.out.println("哥哥帮忙洗碗");
    }
}
/**
 * Me类作为HouseWork的接口实现类。
 * 只不过由抽象类Brother直面接口
 * 而Me类值需要完成自己想完成的方法
 */
public class Me extends Brother{
    /**
     * 受到实现类欢迎的方法
     */
    @Override
    public void play() {
        System.out.println("我玩耍");
    }
}

Servlet规范

在Servlet规范中要求,要将类部署到tomcat等服务器中,要实现Servlet接口。但是我们一般开发中都是继承HttpServlet。

public abstract class HttpServlet extends GenericServlet {
    //........
}
public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
    //.......
}

从源码中可以看到Servlet的设计模式中有适配器模式,并没有让Servlet中所有的方法都需要开发者自己去实现,一般实现各server方法即可。在HttpServlet,GenericServlet中可以看到实现的痕迹

你可能感兴趣的:(设计模式)