[Java] interface 다시 보기

snowballnote·4일 전

Biz Assist에 외부 공고 수집처를 추가하면서
BidCandidateCollector 인터페이스를 만들었다.

public interface BidCandidateCollector {

    List<BidQualificationDto> collect(
            LocalDate startDate,
            LocalDate endDate
    );
}

interface가 뭐였지

인터페이스는
클래스가 어떤 기능을 가져야 하는지 정하는 약속이다.

위 코드에서는

collect(startDate, endDate)

라는 메서드를 구현해야 한다.

즉 수집처가 어디든
기간을 받아서 공고 후보 목록을 반환해야 한다.

implements

인터페이스를 실제 클래스에서 구현할 때는
implements를 사용한다.

class KoreaExpresswayBidCollector
        implements BidCandidateCollector {
}

그리고 인터페이스에 정의된 메서드를 실제로 구현한다.

@Override
public List<BidQualificationDto> collect(
        LocalDate startDate,
        LocalDate endDate
) {
    // 수집 로직
}

Biz Assist에서는 왜 썼나

나라장터와 한국도로공사는
공고를 가져오는 방식이 다르다.

그래도 Biz Assist 입장에서는 둘 다

공고 후보를 가져오는 수집기

다.

그래서 실제 구현은 각 클래스에서 다르게 하고
밖에서는 같은 BidCandidateCollector 타입으로 다룰 수 있게 했다.

나라장터 수집기
한국도로공사 수집기
다른 수집처

↓ 모두

BidCandidateCollector

다시 정리

interface
→ 해야 할 기능의 형태 정의

implements
→ 인터페이스를 실제 클래스에서 구현

@Override
→ 정의된 메서드를 실제 동작으로 작성

이번에 직접 써보니까 interface는

구현 방식은 다르지만 같은 역할을 하는 클래스들을 묶는 기준

이라고 생각하면 이해하기 쉬웠다.

profile
개발자로 이 험난한 세상 살아가기

0개의 댓글