设计模式之适配器模式

打印 上一主题 下一主题

主题 552|帖子 552|积分 1656

1.适配器模式概念

        用于将一个类的接口转换成客户盼望的另一个接口。适配器模式让本来由于接口不兼容而不能一起工作的那些类可以一起工作
2.适配器组成部分

1)目标接口 (Target): 客户端盼望利用的接口。
2)适配者类 (Adaptee): 须要适配的已有类,其接口不符合目标接口的要求。
3)适配器类 (Adapter): 将适配者接口转换为目标接口,充当适配者和目标之间的桥梁。
3.举个栗子:

寻常我们利用的用电器时,会碰到插头和插板孔不对的情况,我可以选择买一个接头转换器,然后就能正常利用了
如下图:

4.代码实现

1)ThreePort实现类

  1. package org.xiji.adapter;
  2. /**
  3. * 接口
  4. */
  5. public interface ThreePort {
  6.     //输入电源
  7.     String inputPower();
  8. }
复制代码
2)TwoPort实现类

  1. package org.xiji.adapter;
  2. /**
  3. * 两孔插头
  4. */
  5. public class TwoPort {
  6.     //接通电源
  7.     public void connectPower(String power) {
  8.         System.out.println(power+"    两孔插头接通电源正常工作  ");
  9.     }
  10. }
复制代码
3)ThreeAdapteTwo实现类

  1. package org.xiji.adapter;
  2. /**
  3. * 适配器
  4. */
  5. public class ThreeAdapterTwo implements ThreePort{
  6.     private TwoPort twoPort;
  7.     @Override
  8.     public String inputPower() {
  9.         return "输出电源";
  10.     }
  11.     /**
  12.      *
  13.      * 接通电源
  14.      */
  15.     public void connectPower(){
  16.         this.twoPort.connectPower(this.inputPower());
  17.     }
  18.     public ThreeAdapterTwo() {
  19.     }
  20.     public TwoPort getTwoPort() {
  21.         return this.twoPort;
  22.     }
  23.     public void setTwoPort(TwoPort twoPort) {
  24.         this.twoPort = twoPort;
  25.     }
  26.     public ThreeAdapterTwo(TwoPort twoPort) {
  27.         this.twoPort = twoPort;
  28.     }
  29. }
复制代码
4)测试类

  1. package org.xiji.adapter;
  2. /**
  3. * 适配器测试类
  4. */
  5. public class AdapterMain {
  6.     public static void main(String[] args) {
  7.         //创建插头
  8.         System.out.println("创建插头");
  9.         TwoPort twoPort = new TwoPort();
  10.         
  11.         //创建多孔适配器
  12.         System.out.println("创建多孔适配器");
  13.         ThreeAdapterTwo threeAdapterTwo = new ThreeAdapterTwo();
  14.         //两孔插头插入多孔连接器
  15.         System.out.println("两孔插头插入多孔连接器");
  16.         threeAdapterTwo.setTwoPort(twoPort);
  17.         //连接三孔插头电源
  18.         System.out.println("连接三孔插头电源");
  19.         threeAdapterTwo.connectPower();
  20.     }
  21. }
复制代码
5)测试结果如下



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表