设计模式之适配器模式

适配器模式

  • 适配器模式典型应用场景:电脑 网线 转接头
  • 代码实现关键点 网线对象、电脑对象、适配接口、适配接口实现、客户端测试例,实现代码如下:
  1. 网线对象实现上网功能
package com.gof23.adapter1;

/**
 * 网线
 */
public class Adaptee {
    public void net(){
        System.out.println("网线上网");
    }
}
  1. 适配接口,usb转接方法
package com.gof23.adapter1;
/**
 * 适配器接口
 */
public interface AdapterInf {
    public void net2usb();
}
  1. 适配器实现
    3.1. 适配实现,继承被适配类,称为类适配器模式
package com.gof23.adapter1;

/**
 * 类适配器模式,继承被适配类的
 */
public class Adapter1 extends Adaptee implements AdapterInf {

    @Override
    public void net2usb(){
        super.net();
    }
}

3.2. 适配实现组合被适配的对象,称为对象适配器模式

package com.gof23.adapter1;

/**
* 对象适配器模式,将被适配的对象用组合的方式
*/
public class Adapter implements AdapterInf {
  private  Adaptee adaptee;

  Adapter(Adaptee adaptee){
      this.adaptee = adaptee;
  }

  @Override
  public void net2usb(){
      adaptee.net();
  }
}
  1. 电脑通过适配实现上网
package com.gof23.adapter1;

/**
 * 电脑
 */
public class Computer {
    private AdapterInf adapterInf;

    Computer(AdapterInf adapterInf){
        this.adapterInf = adapterInf;
    }
    public void net(){
        adapterInf.net2usb();
    }
}
  1. client端测试电脑上网
package com.gof23.adapter1;

/**
 * 客户端测试
 */
public class Client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        AdapterInf adapter = new Adapter(adaptee);
        Computer computer = new Computer(adapter);
        computer.net();
    }
}
posted @ 2021-09-28 20:57  回望初心  阅读(49)  评论(0)    收藏  举报