[Java8 In Action] #2 동적 파라미터화 코드 전달하기 |
Java8 In Action 내용을 보며 정리한 내용입니다.
정리자는 기존에 Java8 을 한차례 rough 하게 공부한 적이 있고, Kotlin 역시 공부한 적이 있습니다.
위의 prerequisite 가 있는 상태에서 추가적인 내용만 정리한 내용이므로, 제대로 공부를 하고 싶다면 책을 구매해서 보길 권장합니다!
2.1. 변화하는 요구사항에 대응하기
2.1.1. 첫 번째 시도: 녹색 사과 필터링
2.1.2. 두 번째 시도: 색을 파라미터화
2.1.3. 세 번째 시도: 가능한 모든 속성으로 필터링
2.2. 동작 파라미터화
-
전략 디자인 패턴(strategy design pattern)은 각 알고리즘(전략)을 캡슐화하는 알고리즘 패밀리를 정의해둔 다음, 런타임에 알고리즘을 선택하는 기법이다.
2.2.1. 네 번째 시도 : 추상적 조건으로 필터링
코드/동작 전달하기
한 개의 파라미터, 다양한 동작
2.3. 복잡한 과정 간소화
2.3.1. 익명 클래스
2.3.2. 다섯 번째 시도 : 익명 클래스 사용
-
코드의 장황함(verbosity)은 나쁜 특성이다.
장황한 코드는 구현하고 유지보수하는 데 시간이 오래 걸릴 뿐 아니라 읽는 즐거움을 빼앗는 요소로, 개발자로부터 외면받는다.
한눈에 이해할 수 있어야 좋은 코드다.
2.3.3. 여섯 번째 시도 : 람다 표현식 사용
2.3.4. 일곱 번째 시도 : 리스트 형식으로 추상화
2.4. 실전 예제
2.4.1. Comparator 정렬하기
2.4.2. Runnable 로 코드 블록 실행하기
2.4.3. GUI 이벤트 처리하기
2.5. 요약
-
동작 파라미터화에서는 메서드 내부적으로 다양한 동작을 수행할 수 있도록 코드를 메서드 인수로 전달한다.
-
동작 파라미터화를 이용하면 변화하는 요구사항에 더 잘 대응할 수 있는 코드를 구현할 수 있으며 나중에 엔지니어링 비용을 줄일 수 있다.
-
코드 전달 기법을 이용하면 동작을 메서드의 인수로 전달할 수 있다. 하지만 자바 8 이전에는 코드를 지저분하게 구현해야 했다. 익명 클래스로도 어느 정도 코드를 깔끔하게 만들 수 있지만 자바 8에서는 인터페이스를 상속받아 여러 클래스를 구현해야 하는 수고를 없앨 수 있는 방법(람다)를 제공한다.
-
자바 API 의 많은 메서드는 정렬, 스레드, GUI 처리 등을 포함한 다양한 동작으로 파라미터화할 수 있다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Java8 In Action] #4 스트림 소개 (0) | 2018.12.24 |
---|---|
[Java8 In Action] #3 람다 표현식 (0) | 2018.12.23 |
[Java8 In Action] #1 기초 (2) | 2018.12.21 |
[Java] Semaphore 에 대해 알아보자. (0) | 2018.12.20 |
Java bytecode 분석 (0) | 2018.12.19 |
댓글