【图解设计模式】设计模式之【Adapter】模式

Adapter模式


1. 定义:适配器模式(顾名思义:主要是用于填补"现有的程序与所需的程序之间的差异")


2. Adapter模式有两种:

  • 类适配器模式(使用继承的适配器)
  • 对象适配器模式(使用委托的适配器)

3. 我们来看下关系图(使用继承的适配器)


4. 实例代码
Banner.java

package Adapter.extend;

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 + "*");
        }
}

Print.java

package Adapter.extend;

public interface Print {

     public abstract void printWeak();

     public abstract void printStrong();

}


PrintBanner.java

package Adapter.extend;

/*

 * 

 * 相当于电源适配器,将220V 电压转换成电脑需要用的50 V电压

 */

public class PrintBanner extends Banner implements Print 
{



     public PrintBanner(String string) {

          // 用于调用其父类的构造函数

          super(string);

     }



     @Override

     public void printWeak() {

          showWithParen();

     }



     @Override

     public void printStrong() {

          showWithAster();

     }



}


Main.java

package Adapter.extend;



public class Main {



     public static void main(String[] args) {

          Print p = new PrintBanner("Hello");

          p.printWeak();

          p.printStrong();

     }



}


输出结果:

总结;

 已有220V电压:  PrintBanner
 需要50V电压:   Print
 电源转换器:     PrintBanner
 优点:
        我们只需要使用Print接口进行编程,也就是电脑只是使用50V电压进行工作,
 它并不需要关系电压时如何进行转换的..优点就是我们在可以不用对Main类进行修改
 的情况下改变PrintBanner类的具体实现.

5. 我们来看下关系图(使用委托的适配器)

Print.java

package Adapter.entrust;



public abstract class Print {

     public abstract void printWeak();

     public abstract void printStrong();

}


PrintBanner.java

package Adapter.entrust;



/*

 * 

 * 相当于电源适配器,将220V 电压转换成电脑需要用的50 V电压

 */

public class PrintBanner extends Print {

     private Banner banner;



     public PrintBanner(String string) {

          this.banner = new Banner(string);

     }



     @Override

     public void printWeak() {

          banner.showWithParen();

     }



     @Override

     public void printStrong() {

          banner.showWithAster();

     }



}


两种模式对比:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值