侧边栏壁纸
博主头像
千异博主等级

学无止境,学以致用,志存高远!

  • 累计撰写 28 篇文章
  • 累计创建 26 个标签
  • 累计收到 0 条评论

Gof——Adapter模式(适配器模式)

千异
2022-04-26 / 0 评论 / 0 点赞 / 1,380 阅读 / 1,305 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

使用继承的适配器(类适配器)

package xin.jiangqiang.adapter;

public interface Print{
    void printWeak();

    void printStrong();
}
package xin.jiangqiang.adapter;

public class Banner {
    private String string;

    public Banner(String string) {
        this.string = string;
    }
    public void showWithParen() {
        System.out.println("(" + string + ")");
    }
    public void showWithAster() {
        System.out.println("*" + string + "*");
    }
}
package xin.jiangqiang.adapter;

public class PrintBanner extends Banner implements Print {

    public PrintBanner(String s) {
        super(s);
    }

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

    @Override
    public void printStrong() {
        showWithAster();
    }
}
package xin.jiangqiang.adapter;

public class Main {
    public static void main(String[] args) {
        Print p = new PrintBanner("Hello");
        p.printWeak();
        p.printStrong();
    }
}

使用委托的适配器(对象适配器)

package xin.jiangqiang.adapter;

public abstract class Print2 {
    public abstract void printWeak();

    public abstract void printStrong();
}
package xin.jiangqiang.adapter;

public class PrintBanner2 extends Print2 {
    private Banner banner;

    public PrintBanner2(String string) {
        this.banner = new Banner(string);
    }

    @Override
    public void printWeak() {
        banner.showWithParen();
    }

    @Override
    public void printStrong() {
        banner.showWithAster();
    }
}
package xin.jiangqiang.adapter;

public class Main {
    public static void main(String[] args) {
        Print2 p = new PrintBanner2("Hello");
        p.printWeak();
        p.printStrong();
    }
}
0
博主关闭了所有页面的评论