• 图解设计模式-adapter模式


    使用Adapter模式可以在完全不改变原有代码的前提下使现有代码适配于新的接口API。
    Adapter模式有以下两种方式:
    类适配器模式(使用继承方式的适配器)
    对象适配器模式(使用委托的适配器)
     
    Adapter涉及到的角色
    Target对象:该角色定义了所需的方法(Print接口)
    Client请求者:该角色负责使用Target角色定义的方法进行具体处理(相当于main方法)
    Adaptee被适配:是一个持有既定方法的角色。(Banner类)
    Adapter适配:使用Adaptee角色来满足Target的需求(PrintBanner类)
    类适配器模式:
     
    public interface Print {
        public abstract void pringWeak();
        public abstract void printStrong();
    }
    public class Banner
    {
        private String string;
    
        public Banner(String string) {
            this.string= string;
        }
    
        public void showWithParam() {
            System.out.println("{"+string+"}");
        }
    
        public void showWithAster() {
            System.out.println("*"+string+"*");
        }
    }
    public class PrintBanner extends Banner implements Print {
    
        public PrintBanner(String string) {
            super(string);
        }
        @Override
        public void pringWeak() {
            showWithAster();
        }
    
        @Override
        public void printStrong() {
            showWithParam();
        }
    }
    public class Main {
        public static void main(String[] args) {
            Print printBanner = new PrintBanner("adapter");
            printBanner.pringWeak();
            printBanner.printStrong();;
        }
    }
    对象适配器模式:(对PrintBanner类进行修改)
    public class PrintBanner implements Print {
    
        private Banner banner;
    
        public PrintBanner(String string) {
            this.banner = new Banner(string);
        }
        @Override
        public void pringWeak() {
            banner.showWithAster();
        }
    
        @Override
        public void printStrong() {
            banner.showWithParam();
        }
    }
    什么时候使用Adapter模式:
    对已有接口进行扩展时,例如service层返回的接口包括的数据结果在新的controller中可使用,那么直接复用原有的service层接口,直接使用,复用代码减少出错的几率。
     
     
     
     
     
     
    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    rpc框架thrift
    rpc框架 SimpleXMLRP
    pyqt与拉勾网爬虫的结合
    python打造线程池
    python concurrent.futures包使用,捕获异常
    linux环境下pytesseract的安装和央行征信中心的登录验证码识别
    使用装饰器捕捉错误
    hbase 学习(十六)系统架构图
    大数据入门:各种大数据技术介绍
    How MapReduce Works
  • 原文地址:https://www.cnblogs.com/use-D/p/9551801.html
Copyright © 2020-2023  润新知