Adapter适配器模式

  • 应用场景
    在程序世界里面,经常会有现有的程序无法直接使用,需要做适当的转换之后才可以使用的情况。而适配器模式就是这种填补差异的设计模式。

    Adapter同时也被称为Wrapper模式,Wrapper就有包装器的意思。使用精美的包装纸将商品包装成礼物。

  • 类适配器模式
    Banner类 具体实现了怎么转换 ,目的就是让字符串输出
    public class Banner {

    private String string;

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

    /**
     * 显示带括号
     */
    public void showWithParen(){
        System.out.println("( "+this.string+" )");
    }

    /**
     *显示带星号
     */
    public void showWithAster(){
        System.out.println("* "+this.string+" *");
    }

}

Print接口 一个打印的接口

public interface Print {
   public abstract void printParen();
   public abstract void printAster();
}

PrintBanner类 真正实现了适配器功能的类

public class PrintBanner extends Banner implements Print {

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

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

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

}

APP
main类并不知道 PrintBanner 类是如何实现这种输出的,这样就可以在不用对Main类进行修改的情况下通过改变 PrintBanner 的具体实现来改变程序的输出结果

public class Main {
      public static void main(String[] args) {
        Print print = new PrintBanner("你好");
        print.printAster();
        print.printParen();
    }
}
  • 对象适配器

Banner类跟上述类一样
下面是Print类 上文把这个声明为一个接口,这里把它写成一个抽象类

public abstract class Print {

    public abstract void printParen();

    public abstract void printAster();

}

PrintBanner 继承了抽象类,并且创建了Banner的对象,调用了Banner的方法

public class PrintBanner extends Print {

    private Banner banner;  
    @Override
    public void printParen() {
        banner.showWithParen();
    }

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

}

这个app与上文一样。

  • 什么时候使用Adapter
    很多时候我们写程序,并不是从零开始写,而是有一些很多 经过过反复测试的类提供给我们自己用。Adapter模式会对现有的类进行适配生成新的类。通过这种模式来创建适合我们自己项目的类,如果出现问题,我们就可以很明确的知道错误在哪!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值