>Java >java지도 시간 >두 가지 범주의 Java 어댑터 패턴 및 특정 애플리케이션 시나리오

두 가지 범주의 Java 어댑터 패턴 및 특정 애플리케이션 시나리오

PHPz
PHPz앞으로
2023-04-22 09:31:071472검색

1. 클래스 어댑터 패턴

구현 방법: 현재 시스템의 비즈니스 인터페이스를 구현하는 동시에 기존 컴포넌트 라이브러리에 이미 존재하는 컴포넌트를 상속하기 위해 어댑터 클래스를 정의합니다.

public class HelloWorld {
    public static void main(String[] args) {
        Computer computer = new Computer();
        SDCard sdCard = new SDCardImpl();
        System.out.println(computer.readSD(sdCard));
 
        System.out.println("------------");
 
        SDAdapterTF adapter = new SDAdapterTF();
        System.out.println(computer.readSD(adapter));
    }
}
 
// SD卡的接口
interface SDCard {
    // 读取SD卡功能
    String readSD();
 
    // 写入SD卡功能
    void writeSD(String msg);
}
 
// SD卡实现类
class SDCardImpl implements SDCard {
    @Override
    public String readSD() {
        String msg = "sd card read a msg: hello sd card";
        return msg;
    }
 
    @Override
    public void writeSD(String msg) {
        System.out.println("sd card write msg: " + msg);
    }
}
 
// 电脑类
class Computer {
    public String readSD(SDCard sdCard) {
        if (sdCard == null) {
            throw new NullPointerException("sd card null");
        }
        return sdCard.readSD();
    }
}
 
// TF卡接口
interface TFCard {
    // 读取TF卡功能
    String readTF();
 
    // 写入TF卡功能
    void writeTF(String msg);
}
 
// TF卡实现类
class TFCardImpl implements TFCard {
    @Override
    public String readTF() {
        String msg = "sd card read a msg: hello tf card";
        return msg;
    }
 
    @Override
    public void writeTF(String msg) {
        System.out.println("tf card write msg: " + msg);
    }
}
 
// 定义适配器类(SD兼容TF)
class SDAdapterTF extends TFCardImpl implements SDCard {
    @Override
    public String readSD() {
        System.out.println("adapter read tf card ");
        return readTF();
    }
 
    @Override
    public void writeSD(String msg) {
        System.out.println("adapter write tf card");
        writeTF(msg);
    }
}

2. 개체 어댑터 패턴

구현 방법: 개체 어댑터 패턴은 기존 구성 요소 라이브러리에 구현된 구성 요소를 어댑터에 도입할 수도 있습니다.

아아아아

위 내용은 두 가지 범주의 Java 어댑터 패턴 및 특정 애플리케이션 시나리오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제