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开始工作

  • 相关阅读:
    剑指offer系列——56.删除链表中重复的结点
    剑指offer系列——55.链表中环的入口结点
    剑指offer系列——54.字符流中第一个不重复的字符
    剑指offer系列——53.表示数值的字符串
    MinGW与Cygwin
    Android-x86虚拟机安装配置全攻略
    linux下使用NFS挂载文件系统
    ubuntu 64bit “arm-linux-gcc: No such file or directory”问题的解决方法
    虚拟机下ubuntu的minicom使用指南
    Linux 下编译、安装、配置 QT
  • 原文地址:https://www.cnblogs.com/qinggege/p/5233859.html
Copyright © 2011-2022 走看看