zoukankan      html  css  js  c++  java
  • (七)适配器模式-代码实现

    介绍

    意图:将一个类的接口转换成客户希望的另外一个接口。 A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    别名:包装器 Wrapper

    动机:有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。

    应用场景:需要使用到老的类,但是不符合新接口规则的时候,就是适配器出场的时候了

    代码:

    //老的类

    package note.com.adapter;
    
    public class OldActionA {
        public void start(){
            System.out.println("start开始工作");
        }
    }

    //新的类基类

    package note.com.adapter;
    
    public interface NewAction {
        public void run();
    }

    //新的类实现

    package note.com.adapter;
    
    public class NewActionB implements NewAction{
        public void run(){
            System.out.println("run开始工作");
        }
    }

    //新的调用规则

    package note.com.adapter;
    
    public class NewClient {
    
        public void userDo(NewAction action){
            action.run();
        }
    }

    //符合新的调用规则的老类适配器

    package note.com.adapter;
    
    public class NewAdapter implements NewAction{//如果新类是没有基类的,可以直接继承新类
    
        private OldActionA a = null;
        public NewAdapter(OldActionA a){
            this.a = a;
        }
        public void run() {
            a.start();
        }
    
    }

    //测试类

    package note.com.adapter;
    
    public class AdapterTest {
        public static void main(String[] args) {
            NewClient client = new NewClient();//创建新的调用器
            NewActionB newB = new NewActionB();//符合新调用器规则的类
            client.userDo(newB);//调用器调用
            OldActionA oldA = new OldActionA();//不符合新调用器规则的类
            NewAdapter newA = new NewAdapter(oldA);//能够对不符合调用器规则的类进行适配的适配器
            client.userDo(newA);//调用器调用
        }
    }

    //结果

    run开始工作
    start开始工作

  • 相关阅读:
    13、文件修改及函数的基本使用
    12、文件处理 b模式
    作业3月16号
    作业3月13号
    11、文件处理 t模式
    10、数据类型内置之集合
    作业3月11号
    9、基础类型之列表、元组、字典
    作业3月10号
    8、for循环以及数字类型和字符串类型的内置方法
  • 原文地址:https://www.cnblogs.com/qinggege/p/5233859.html
Copyright © 2011-2022 走看看