设计模式(java版)——结构型——适配器模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37776094/article/details/89633729

项目源码已提交github:https://github.com/ckl001/designPattem_java

package com.Ljava.design.pattem.structural.adapter.singleEg;

/**
 * @Auther 20173
 * @Date 2019-4-9 11:58
 * @Des 交流电 220V
 **/
public class AC220 {

    public int outputAC220V(){
        int output = 220;
        System.out.println("输出交流电" + output + "V");
        return output;
    }

}

package com.Ljava.design.pattem.structural.adapter.singleEg;

/**
 * 直流电 5V
 */
public interface DC5 {
    int outputDC5V();
}

``package com.Ljava.design.pattem.structural.adapter.singleEg;

/**
 * @Auther 20173
 * @Date 2019-4-9 12:10
 * @Des 电流适配器
 **/
public class PowerAdapter implements DC5{

    public AC220 ac220 = new AC220();

    /**
     * 220V 交流电转 5V直流电
     * @return
     */
    @Override
    public int outputDC5V() {
        int adapterInput = ac220.outputAC220V();
        int adapterOutput = adapterInput / 44;
        System.out.println("使用PowerAdapter输入AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
        return adapterOutput;
    }
}

package com.Ljava.design.pattem.structural.adapter.singleEg;

/**

  • @Auther 20173

  • @Date 2019-4-9 12:13

  • @Des TODO
    **/
    public class Test {

    public static void main(String[] args) {
    DC5 dc5 = new PowerAdapter();
    dc5.outputDC5V();
    }
    }

-----------------------------------------------------------------------------
对象适配

package com.Ljava.design.pattem.structural.adapter.objectadapter;

/**

  • @Auther 20173
  • @Date 2019-4-9 14:22
  • @Des 目标方法 – 接口
    **/
    public interface Target {
    void request();
    }

package com.Ljava.design.pattem.structural.adapter.objectadapter;

/**

  • @Auther 20173
  • @Date 2019-4-9 14:27
  • @Des 当前目标方法
    **/
    public class ConcreteTarget implements Target {
    @Override
    public void request() {
    System.out.println(“concreteTarget目标方法”);
    }
    }

package com.Ljava.design.pattem.structural.adapter.objectadapter;

/**

  • @Auther 20173

  • @Date 2019-4-9 14:20

  • @Des 被适配者
    **/
    public class Adaptee {

    public void adapterRequest(){
    System.out.println(“被适配者的方法!”);
    }
    }


package com.Ljava.design.pattem.structural.adapter.objectadapter;

/**

  • @Auther 20173
  • @Date 2019-4-9 14:22
  • @Des 适配器
    **/
    public class Adapter implements Target {
    private Adaptee adaptee = new Adaptee();
    @Override
    public void request() {
    adaptee.adapterRequest();
    }
    }

package com.Ljava.design.pattem.structural.adapter.objectadapter;

/**

  • @Auther 20173

  • @Date 2019-4-9 14:27

  • @Des TODO
    **/
    public class Test {

    public static void main(String[] args) {
    Target target = new ConcreteTarget();
    target.request();

     Target adapterTarget = new Adapter();
     adapterTarget.request();
    

    }
    }

----------------------------------------------------------------------------
类适配

package com.Ljava.design.pattem.structural.adapter.classadapter;

/**

  • @Auther 20173
  • @Date 2019-4-9 14:22
  • @Des 目标方法 – 接口
    **/
    public interface Target {
    void request();
    }

package com.Ljava.design.pattem.structural.adapter.classadapter;

/**

  • @Auther 20173
  • @Date 2019-4-9 14:27
  • @Des 当前目标方法
    **/
    public class ConcreteTarget implements Target {
    @Override
    public void request() {
    System.out.println(“concreteTarget目标方法”);
    }
    }

package com.Ljava.design.pattem.structural.adapter.classadapter;

/**

  • @Auther 20173

  • @Date 2019-4-9 14:20

  • @Des 被适配者
    **/
    public class Adaptee {

    public void adapterRequest(){
    System.out.println(“被适配者的方法!”);
    }
    }


package com.Ljava.design.pattem.structural.adapter.classadapter;

/**

  • @Auther 20173
  • @Date 2019-4-9 14:22
  • @Des 适配器
    **/
    public class Adapter extends Adaptee implements Target{
    @Override
    public void request() {
    super.adapterRequest();
    }
    }

package com.Ljava.design.pattem.structural.adapter.classadapter;

/**

  • @Auther 20173

  • @Date 2019-4-9 14:27

  • @Des TODO
    **/
    public class Test {

    public static void main(String[] args) {
    Target target = new ConcreteTarget();
    target.request();

     Target adapterTarget = new Adapter();
     adapterTarget.request();
    

    }
    }


猜你喜欢

转载自blog.csdn.net/m0_37776094/article/details/89633729