设计模式——适配器模式

栏目: 后端 · 发布时间: 6年前

适配器模式也叫做包装模式;就是把内部结构包装(适配)成用户期待的格式,使得可以兼容使用

通过继承方式使用适配器模式

设计模式——适配器模式
/**
 * @author maikec
 * @date 2019/5/9
 */
public interface Print {
    /**
     * 打印带括号的消息
     */
    void printParen();

    /**
     * 打印带*号的消息
     */
    void printAster();
}

/**
 * 实际使用中的类
 * @author maikec
 * @date 2019/5/9
 */
public class Banner {
    private final String msg;
    public Banner(String msg){
        this.msg = msg;
    }
    public void showWithParen(){
        System.out.println( "(" + msg + ")" );
    }
    public void showWithAster(){
        System.out.println( "*" + msg + "*" );
    }
}

/**
 * @author maikec
 * @date 2019/5/9
 */
public class PrintBannerAdapter extends Banner implements Print {

    public PrintBannerAdapter(String msg) {
        super( msg );
    }

    @Override
    public void printParen() {
        showWithParen();
    }

    @Override
    public void printAster() {
        showWithAster();
    }
}

/**
 * @author maikec
 * @date 2019/5/9
 */
public class AdapterExtendDemo {
    public static void main(String[] args) {
        Print print = new PrintBannerAdapter( "hello adapter" );
        print.printAster(  );
        print.printParen();
    }
}

复制代码

通过引用使用适配器模式

设计模式——适配器模式
/**
 * 需求
 * @author maikec
 * @date 2019/5/9
 */
public abstract class Print {
    /**
     * 打印带括号的消息
     */
    public abstract void printParen();

    /**
     * 打印带*号的消息
     */
    public abstract void printAster();

    public void i(){

    }
}

/**
 * 实际使用中的类
 * @author maikec
 * @date 2019/5/9
 */
public class Banner {
    private final String msg;
    public Banner(String msg){
        this.msg = msg;
    }
    public void showWithParen(){
        System.out.println( "(" + msg + ")" );
    }
    public void showWithAster(){
        System.out.println( "*" + msg + "*" );
    }
}

/**
 * @author maikec
 * @date 2019/5/9
 */
public class PrintBannerAdapter extends Print {
    private Banner banner;

    public PrintBannerAdapter(Banner banner){
        this.banner = banner;
    }
    @Override
    public void printParen() {
        banner.showWithParen();
    }

    @Override
    public void printAster() {
        banner.showWithAster();
    }
}

/**
 * @author maikec
 * @date 2019/5/9
 */
public class AdapterReferenceDemo {
    public static void main(String[] args) {
        Print print = new PrintBannerAdapter( new Banner( "Hello Adapter" ) );
        print.printAster();
        print.printParen();
    }
}

复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

支持向量机

支持向量机

邓乃扬、田英杰 / 科学出版社 / 2009-8 / 48.00元

《支持向量机:理论、算法与拓展》以分类问题(模式识别、判别分析)和回归问题为背景,介绍支持向量机的基本理论、方法和应用。特别强调对所讨论的问题和处理方法的实质进行直观的解释和说明,因此具有很强的可读性。为使具有一般高等数学知识的读者能够顺利阅读,书中首先介绍了最优化的基础知识。《支持向量机:理论、算法与拓展》可作为理工类、管理学等专业的高年级本科生、研究生和教师的教材或教学参考书,也可供相关领域的......一起来看看 《支持向量机》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码