当前位置: 移动技术网 > IT编程>软件设计>设计模式 > 设计模式——适配器模式

设计模式——适配器模式

2019年05月16日  | 移动技术网IT编程  | 我要评论

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

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

/**
 * @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();
    }
}

 

附录

zh.wikipedia.org/wiki/适配器模式 维基关于适配器模式
github.com/maikec/patt… 个人github设计模式案例

声明

引用该文档请注明出处

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网