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

      如果一个对象实现的接口不满足某个方法的参数要求,又想要这个方法调用这个对象的时候,使用中间对象适配器来解决这个矛盾。

      

      客户类Clinet#MyRequest方法需要传入一个实现了Target接口的对象,并调用Target#request方法。但此时只有实现了 specialTarget了接口的Adaptee对象,在不改变源码的情况下使用适配器Adaptor来调和矛盾。首先从语法角度Adaptor一定要实现Target接口,这样才能传入MyRequest方法,而且Adaptor还要能够调用Adaptee的specialRequest去满足request调用的需求,我更喜欢把这种模式成为欺骗消费者模式。

      欺骗消费者的方式有两种,一种是继承Adaptee这种被称为类适配器,一种是把Adaptee当做内部的属性被称为对象适配器。

    public class Adaptee implements specialTarget{

    @Override
    public void specialRequest() {
    System.out.println("我是Adaptee 我只实现了specialTarget#specialRequest 爱用不用");
    }
    }

    public
    class Client { public void MyRequest(Target target){ System.out.println("我是客户 我现在要一个实现了target的对象"); target.request(); } public static void main(String[] args) { Client client = new Client(); Adaptee adaptee = new Adaptee(); //client.MyRequest(adaptee); Adaptor adaptor = new Adaptor(); client.MyRequest(adaptor); } }
    public class Adaptor extends  Adaptee implements Target{
        @Override
        public void request() {
            System.out.println("我是Adaptor 你们的矛盾我来解决");
            super.specialRequest();
        }
    }
  • 相关阅读:
    集成学习值Adaboost算法原理和代码小结(转载)
    集成学习原理小结(转载)
    2019阿里校招测评题,光明小学完全图最短路径问题(python实现)
    第八节、图片分割之GrabCut算法、分水岭算法
    Scala2.11.8 spark2.3.1 mongodb connector 2.3.0
    spark 实现动态日期读取
    Idea 201601注册码
    linux下的crontab服务
    spark MySQL jar 包
    scala 日期格式转换
  • 原文地址:https://www.cnblogs.com/AshOfTime/p/10632273.html
Copyright © 2011-2022 走看看