zoukankan      html  css  js  c++  java
  • 适配器模式【java版】

    使用场景: 接口转换

    一、对象适配器优先选用

    优选的原因:多用聚合,少用继承

    原始接口类:

    public class Adaptee {

    public void standardRequest(){

    System.out.println("这是原始标准接口!");

    }
    }

    目标接口:

    public interface Target {

    public void newRequest();

    }

    适配器类:

    //聚合的方式,适配器类中“原始接口对象”作为其成员对象
    public class Adapter implements Target {

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

    //实现新接口中的方法
    public void newRequest() {
    System.out.println("调用老接口之前进行一些预处理");
    this.apt.standardRequest();//开始调用老接口

    }

    private Adaptee apt=null;

    }

    测试:

    public class Main {

    public static void main(String[] args) {
    System.out.println("测试对象适配器。。。");

    //创建“原始接口类对象”和“适配器对象”
    Adaptee theAdaptee=new Adaptee();
    Target theTarget=new Adapter(theAdaptee);

    //调用新接口
    theTarget.newRequest();
    }

    }

    运行结果:

    二、类适配器

    原始接口类:

    public class Adaptee {

    public void standardRequest(){

    System.out.println("这是原始标准接口!");

    }
    }

    目标接口:

    public interface Target {

    public void newRequest();

    }

    适配器类:

    //继承的方式,“原始接口类”中的方法通过继承得到,并在新接口的方法中被调用
    public class Adapter extends Adaptee implements Target {

    //实现新接口中的方法
    public void newRequest() {
    System.out.println("调用老接口之前进行一些预处理");
    super.standardRequest();
    }

    }

    测试:

    public class Main {

    public static void main(String[] args) {
    System.out.println("测试类适配器");

    //创建适配器对象
    Target theTarget=new Adapter();

    //调用新接口
    theTarget.newRequest();

    }

    }

    运行结果:



  • 相关阅读:
    Toolkit-常用函数库
    webpack 4版本以上 并行编译 thread-loader
    json格式数据下载
    npm 并行执行 concurrently
    WebAssembly assemblyscript
    npm outdated npm prune
    require import 引入区别
    C#数组的微软官方文档(链接)
    在C#中,override的成员仍然是virtual的
    SQL Server的DECIMAL类型,进行算术运算后会有精度变化
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2294115.html
Copyright © 2011-2022 走看看