Adaptor-适配器模式-1

作用:适配器(也叫Wrapper-包装器)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也就是将既有内容转换成需要结果,是代码重用的利器之一,Java I/O中应用了这种模式(如ByteArrayInputStreamByteArrayOutputStream)。形象地:就如同笔记本电脑的电源适配器,一端是220交流电(既有内容),另一端12v直流电(需要结果)。

 

分类Adaptor模式有两种,类适配器(继承)、对象适配器(委托) 。两种模式各有优劣,具体在代码解析中说明。

 

 示例-类适配器(继承):

 

电源

程序示例

既有内容

交流电220V

Banner类(showWithParen,shoWithAster

转换装置

适配器

PrintBanner

需要的结果

直流电12V

Print接口 (PrintWeakPrintStrong

 类图查看图片附件:类图-Adapter_1

//------------------------------------------Banner---------------------------------------------------------------

package adapter;

public class Banner{
 private String strings;
 public Banner(String strings){
  this.strings = strings;
 }
 public void showWithParen(){
   System.out.println("("+strings+")");
 }
 public void showWithAster(){
  System.out.println("*"+strings+"*");
 }
}

//------------------------------------------PrintBanner---------------------------------------------------------------

package adapter;
public class PrintBanner extends Banner implements Print{
 public PrintBanner(String strings){
  super(strings);//
父类构造函数来初始化~~
 }
 public void printWeak(){
  showWithParen();
 }
 public void printStrong(){
  showWithAster();
 }
}

//------------------------------------------Print接口---------------------------------------------------------------

package adapter;

public interface Print{
 public abstract void printWeak();
 public abstract void printStrong();
}

//------------------------------------------测试类---------------------------------------------------------------

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

 示例-对象适配器(委托):

 类图查看图片附件:类图-Adapter_2

 

//------------------------------------------Banner---------------------------------------------------------------

    同上

//------------------------------------------PrintBanner---------------------------------------------------------------

package adapter;
public class PrintBanner extends Print{

       private Banner banner;

       public PrintBanner(String strings){

              this.banner = new Banner(strings);

       }

       public void printWeak(){

              banner.showWithParen();

       }

       public void printStrong(){

              banner.showWithAster();

       }

}

//------------------------------------------Print---------------------------------------------------------------

package adapter;

public interface Print{
public abstract class Print{

    public abstract void printWeak();

    public abstract void printStrong();

}

//------------------------------------------测试类---------------------------------------------------------------

同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值