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

    适配器模式类似于电脑上各种转接口(如ps转usb),只要用该转接口连接两端产品,电脑就能适用。

    使用情况:

      1. 系统需要使用现有的类,但此类的接口不符合系统需要。

      2. 想要建立一个可重复使用的类。用于一些彼此间没太大关联的一些类。包括一些可能在将来引进的类一起工作。

    适配器模式,把一个类 的接口转换成客户端所期待的另一种接口。使得原本由于接口不兼容的那些类能正常使用。

     从上图,Adaptee类没有sampleOperaton2()方法,而客户端则期待这个方法。为了能使客户端能够使用Adaptee类,需要提供一个包装类Apapter,

    这个包装类包装了一个Adaptee的实例,从而能够把Adaptee的API与Target类的API衔接起来,从上图可以看出适配器模式所涉及的角色。

      1. 目标(Target)角色

      2. 源(Adaptee)角色

      3. 适配器(Adapter)角色:适配器类是本模式核心,负责把源接口转换成目标接口。

    /**
     * 被适配对象 ps键盘
     */
    public class Adaptee {
        public void request(){
            System.out.println("可以完成客户需求");
        }
    
    }
    

      

    public interface Target {
        void handleRequest();
    }
    

      

    /**
    * 适配器(相当于usb和ps2转接器)
    */
    public class Adapter implements Target{

    private Adaptee adaptee;

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

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

      

    /**
     * 客户端类
     * 相当于只有usb接口
     */
    public class Client {
    
        public void request(Target t) {
            t.handleRequest();
        }
    
        public static void main(String[] args) {
            //usb
            Client client = new Client();
            //ps2
            Adapter adpater = new Adapter(new Adaptee());
            client.request(adpater);
        }
    }  

     适配器模式用意是将接口不同而功能相同或相近的两个接口加以转换,转换接口含有源角色不具被的方法等。

    在旧系统升级新系统中可以考虑适配器模式。

  • 相关阅读:
    mysql工具导出数据库表数据
    c#接收http的post请求的多个文件流
    java上传文件和参数到服务器
    windows server 2008 w3svc服务无法启动
    java调用c#webapi的接口实现文件上传
    postman上线文件上传,并用c#服务端接收
    sql语句修改数据库字段的长度
    VB2015运行项目时出现的错误
    JavaWeb实现分页功能
    会话跟踪技术
  • 原文地址:https://www.cnblogs.com/gcm688/p/10164944.html
Copyright © 2011-2022 走看看