본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java8 In Action] #2 동적 파라미터화 코드 전달하기

by 돼지왕 왕돼지 2018. 12. 22.
반응형

[Java8 In Action] #2 동적 파라미터화 코드 전달하기





Java8 In Action 내용을 보며 정리한 내용입니다.

정리자는 기존에 Java8 을 한차례 rough 하게 공부한 적이 있고, Kotlin 역시 공부한 적이 있습니다.

위의 prerequisite 가 있는 상태에서 추가적인 내용만 정리한 내용이므로, 제대로 공부를 하고 싶다면 책을 구매해서 보길 권장합니다!


strategy design pattern, [Java8 In Action] #2 동적 파라미터화 코드 전달하기, 동작 파라미터화, 알고리즘 캡슐화, 익명클래스 람다, 전략 디자인 패턴, 파라미터화


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 처리 등을 포함한 다양한 동작으로 파라미터화할 수 있다.





반응형

댓글