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

  • 相关阅读:
    聚类k-means算法详解
    将pip源更换到国内镜像
    python和nltk自然语言处理
    《python自然语言处理》第三章 加工原料文本
    装载问题(最优装载问题变形)-回溯法-深度搜索
    5-2 工作分配问题 (30分)
    5-4 最小重量机器设计问题 (20分)
    7-6 部落卫队问题 (20分)
    7-5 最佳调度问题 (30分)
    原码,补码和反码(转载)
  • 原文地址:https://www.cnblogs.com/qinggege/p/5233859.html
Copyright © 2011-2022 走看看