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();
        }
    }
  • 相关阅读:
    String painter HDU
    GCD Counting-树形DP
    XOR UVALive
    BZOJ-9-3295: [Cqoi2011]动态逆序对
    E
    Stars HDU
    二维单调队列(理想的正方形+修筑绿化带)
    P3622 [APIO2007]动物园
    COJ1160[一本通 5.3 例 1」Amount of Degrees
    [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/AshOfTime/p/10632273.html
Copyright © 2011-2022 走看看