• (七)适配器模式-代码实现


    介绍

    意图:将一个类的接口转换成客户希望的另外一个接口。 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开始工作

  • 相关阅读:
    Splay复习
    带权并查集复习-HDU3038
    罗素悖论-图灵停机问题
    数独解法c++实现
    状压DP NOI2001 炮兵阵地
    区间第k大数
    分块随笔T2
    分块感想
    webkit的高级属性
    设计模式
  • 原文地址:https://www.cnblogs.com/qinggege/p/5233859.html
Copyright © 2020-2023  润新知