본문 바로가기
Study/모던 자바 인 액션

2장, 동작 파라미터화 코드 전달하기

반응형

동작 파라미터화

  • 자주 바뀌는 요구사항에 효과적으로 대응할 수 있게 해주는 방법
  • 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미
  • 핵심기능 ( 각 항목에 적용할 동작 )을 기타 로직과 분리할 수 있다는 것이 가장 큰 장점

DRY 원칙

  • “같은 것을 반복하지 말 것”

동작 메서드에 파라미터를 추가하여 동작을 제어하는 방식은 절대 유연하지 않다.

  • 성격이 조금이라도 다른 동작 ( 파라미터 타입 )이 들어오면 번잡스러워진다.

Predicate

  • 선택 조건을 결정하는 인터페이스
  • 조건에 따라 메서드가 다르게 동작하는 패턴을 “전략 디자인 패턴”이라고 한다.
    • 인터페이스로 인스턴스, 파라미터를 받고, 구현부에서 구현클래스를 선택하여 동작시키는 것
    • 각 알고리즘을 캡슐화하는 알고리즘 패밀리를 정의해둔 다음에 런타임에 알고리즘을 선택하는 기법

익명클래스와의 비교

  • 등장 배경
    • 동작을 전달하기위해 생성한 인터페이스를 이용해 새로운 구현클래스를 만들고 그것을 전달하는 행위는 여러클래스를 정의하고, 인스턴스화 시켜야하므로 상당한 번거로움을 가져온다.
    • 이를 개선한 것이 “익명클래스”라는 기법이다.
  • 자바의 지역클래스(블록내부에 선언된 클래스)와 비슷한 개념이다. 하지만 여전히 익명클래스로 동작을 전달하는 것은 “반복되어 지저분한 코드”를 생성한다.

“코드의 장황함은 나쁜 특성이다. 장황한 코드는 구현하고 유지보수하는데 시간이 오래걸릴 뿐 아니라 읽는 즐거움을 빼앗는 요소로, 개발자에게 외면받는다.”


java5이후로 ExecutorService 추상화 개념 등장

  • 태스크 제출과 실행과정의 연관성을 끊어준다.
  • ExecutorService를 이용하면 태스크를 쓰레드풀로 보내고 결과를 Future로 저장할 수 있다.
728x90
반응형