[java] 인터페이스를 사용하여 네트워크 통신하기

네트워크 통신을 구현할 때 인터페이스를 사용하는 것은 매우 일반적입니다. 인터페이스는 클래스 간의 계약을 정의하고, 클래스가 특정 메서드를 구현하도록 강제함으로써 코드의 유연성을 높이는 데 도움을 줍니다.

1. 인터페이스 정의

public interface NetworkService {
    void connect();
    void sendData(String data);
    String receiveData();
    void disconnect();
}

위의 코드는 NetworkService 라는 인터페이스를 정의한 것입니다. 이 인터페이스에는 connect(), sendData(), receiveData(), disconnect() 메서드가 선언되어 있습니다.

2. 인터페이스 구현

public class TCPNetworkService implements NetworkService {
    // connect() 메서드 구현
    public void connect() {
        // TCP 연결 로직 작성
    }
  
    // sendData() 메서드 구현
    public void sendData(String data) {
        // 데이터 송신 로직 작성
    }
  
    // receiveData() 메서드 구현
    public String receiveData() {
        // 데이터 수신 및 반환 로직 작성
        return "";
    }
  
    // disconnect() 메서드 구현
    public void disconnect() {
        // 연결 해제 로직 작성
    }
}

TCPNetworkService 클래스는 NetworkService 인터페이스를 구현하여, 인터페이스에 선언된 메서드들을 구체적으로 구현하고 있습니다.

3. 활용

public class NetworkHandler {
    private NetworkService networkService;
  
    // NetworkService 객체를 주입받음
    public NetworkHandler(NetworkService networkService) {
        this.networkService = networkService;
    }
  
    // 네트워크 통신 수행
    public void performCommunication() {
        networkService.connect();
        networkService.sendData("Hello, World!");
        String receivedData = networkService.receiveData();
        networkService.disconnect();
    }
}

위의 NetworkHandler 클래스는 NetworkService 인터페이스를 사용하여 네트워크 통신을 수행합니다.

이와 같이, 인터페이스를 사용하여 네트워크 통신을 구현하면 코드의 유연성이 높아지고, 유지보수가 용이해집니다.

참고 자료