设计模式四(适配器模式)

是一种结构性设计模式,将一个类的接口转化为客户希望的另一个接口,充当两个不同接口之间的桥梁,使得原来接口不兼容的类可以一起工作

java 复制代码
 //目标接口
 public interface Target {
 ​
     void request();
 }
java 复制代码
 public class Adaptee {
     void get(){
         System.out.println("成功");
     }
 }
java 复制代码
 public class Adapter implements Target{
 ​
     //持有一个被适配者
     private Adaptee adaptee;
 ​
     public Adapter(Adaptee adaptee) {
         this.adaptee = adaptee;
     }
 ​
     @Override
     public void request() {
         adaptee.get();
     }
 }
 public class Client {
     public static void main(String[] args) {
         Target target = new Adapter(new Adaptee());
         target.request();
     }
 }

作用:

  1. 将客户端代码和具体的类解耦,客户端不需要直到被适配者的细节

  2. 具有良好的拓展性

练习题目页面 (kamacoder.com)

java 复制代码
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        while (num-->0){
            int t = scanner.nextInt();
            if(t ==1){
                computer computer = new computer();
                computer.chargeWithTypeC();
            }else{
                AdapterCharger adapterCharger = new AdapterCharger();
                adapterCharger.charge();
            }
        }
    }
}

interface USB{
    void charge();
}

interface TypeC{
    void chargeWithTypeC();
}

class TypeAdapter implements USB{
    private TypeC typeC;
    public TypeAdapter(TypeC typeC){
        this.typeC = typeC;
    }
    @Override
    public void charge() {
        typeC.chargeWithTypeC();
    }
}

//新电脑使用Type
class computer implements TypeC{

    @Override
    public void chargeWithTypeC() {
        System.out.println("TypeC");
    }
}

class AdapterCharger implements USB{

    @Override
    public void charge() {
        System.out.println("USB Adapter");
    }
}
相关推荐
编程彩机26 分钟前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪28 分钟前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码1 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
像少年啦飞驰点、2 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
眼眸流转2 小时前
Java代码变更影响分析(一)
java·开发语言
Yvonne爱编码2 小时前
JAVA数据结构 DAY4-ArrayList
java·开发语言·数据结构
阿猿收手吧!2 小时前
【C++】C++原子操作:compare_exchange_weak详解
java·jvm·c++
csdn2015_3 小时前
MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明
java·mybatis
追逐梦想的张小年3 小时前
JUC编程03
java·开发语言·idea
万邦科技Lafite3 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台