【每天一个java设计模式(六)】 - 适配器模式

x33g5p2x  于2021-12-20 转载在 Java  
字(1.9k)|赞(0)|评价(0)|浏览(386)

当某种业务功能已经实现,但它们与当前系统的接口不兼容,如果重新开发成本又很高,这时用适配器模式能很好地解决这些问题。

适配器模式是作为两个不兼容的接口之间的桥梁,属于结构型模式,它结合了两个独立接口的功能。

将一个类的接口转换成需要的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

适配器模式的实现:

假设有两款不同年代的电脑,一台功率100W,另一台功率200W。但是现在只有一个100W的充电器,我们要让它为200W的电脑充电,这时候我们就需要创建一个适配器来完成这个工作。

1. 创建一个充电接口

该提供一个按类型充电的方法。

  1. //提供一个按类型充电的方法
  2. public interface Charge {
  3. public void charge(String type);
  4. }

2. 创建100W充电器接口

在这个接口中,提供一个方法可以为100W的电脑充电。

  1. //100W充电器接口
  2. public interface W100 {
  3. public void charge100W();
  4. }

3. 创建100W充电接口的实现类

  1. //100W充电的实现类
  2. public class W100Impl implements W100 {
  3. @Override
  4. public void charge100W() {
  5. System.out.println("使用100W充电器给电脑充电");
  6. }
  7. }

4. 创建适配器

  1. //适配器
  2. public class ChargeAdapter implements Charge {
  3. W100 w100;
  4. public ChargeAdapter(String type){
  5. if(type.equals("100w")){
  6. w100 = new W100Impl();
  7. }
  8. }
  9. @Override
  10. public void charge(String type) {
  11. w100.charge100W();
  12. }
  13. }

5. 创建200W充电器实体

  1. //适配器
  2. //200w充电器
  3. public class W200 implements Charge {
  4. ChargeAdapter chargeAdapter;
  5. @Override
  6. public void charge(String type) {
  7. if(type.equals("200w")){
  8. System.out.println("200W充电器正常充电");
  9. }else if(type.equals("100w")) {
  10. chargeAdapter = new ChargeAdapter(type);
  11. chargeAdapter.charge(type);
  12. }else{
  13. System.out.println("功率不兼容,充电失败!!!");
  14. }
  15. }
  16. }

6. 测试充电结果

  1. public class AdapterMain {
  2. public static void main(String[] args) {
  3. W200 w200 = new W200();
  4. //通过适配器使用100w充电器给200w电脑充电
  5. System.out.print("过适配器使用100w充电器给200w电脑充电:");
  6. w200.charge("100w");
  7. //通过适配器使用300w充电器给200w电脑充电
  8. System.out.print("过适配器使用300w充电器给200w电脑充电:");
  9. w200.charge("300w");
  10. }
  11. }

从打印结果中我们可以看到,当使用100w充电器给200w电脑充电时,充电成功了;而使用300W充电器时,提示我们功率不兼容,这是因为我们只提供了100W的适配器,没有300W的适配器。如果想让300W的充电器给200W的电脑充电,那么就只需要按照上述步骤再添加一个300W适配器即可。

到此,我们实现了适配器模式,成功通过使用适配器让200W电脑兼容100W充电器,即使原本由于接口不兼容而不能一起工作的那些类能一起工作。

前面几节的内容供大家参考:

  • 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
  • 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
  • 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
  • 单例模式:【每天一个java设计模式(三)】 - 单例模式
  • 原型模式:【每天一个java设计模式(四)】 - 原型模式
  • 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式

相关文章

最新文章

更多