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 book网盘
    mysql数据库测试库下载
    TEMP
    测试
    吴炳锡
    ACMUG
    mysql select语句执行顺序
    mysql mha高可用架构的安装
    执行计划解读 简朝阳 (Sky Jian) and 那蓝蓝海
    mysql字符串比较
  • 原文地址:https://www.cnblogs.com/gcm688/p/10164944.html
Copyright © 2011-2022 走看看