zoukankan      html  css  js  c++  java
  • Java设计模式二十:适配器模式(Adapter)

    将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。

    适用情况:
    使用的前提是:接口中规定了所有要实现的方法; 但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。

    实现方法:
    用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是空方法;
    原本要实现接口的子类,只实现上面的抽象类即可,并在其内部实现时,只对其感兴趣的方法进行实现;

    类图:


    角色:
    目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
    需要适配的类(Adaptee): 需要适配的类或适配者类。
    适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。

    实例:
    public interface Target
    {
        public void request();
    }

    public class Adaptee
    {
        public void specialRequest()
        {
            System.out.println("this is special request");
        }
    }

    public class Adapter implements Target
    {
        Adaptee adaptee = new Adaptee();

        @Override
        public void request()
        {
            adaptee.specialRequest();
        }
    }

    public class Client
    {
        public static void main(final String[] args)
        {
            final Target adapter = new Adapter();
            adapter.request();
        }
    }

    主要内容:
    1) 类适配器
    当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。

    2)对象适配器
    对象适配器通过组合除了满足"用户期待的接口"还降低了代码间的不良耦合。

    3)缺省适配器
    缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是空方法,而具体的子类都要继承此抽象类。


  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/itTeacher/p/2821766.html
Copyright © 2011-2022 走看看