티스토리 뷰
git : https://github.com/os94/java-coordinate/tree/enum-customException
기본적으로 Figure를 상속받는 Line, Triangle, Rectangle 클래스가 있다.
그리고 List
팩토리내에선 if문을 없애고자 map을 사용하였다.
이 과정에서 사용된 LineCreator, TriangleCreator, RectangleCreator를 상속시키는 FigureCreator 인터페이스가 존재하며, 이것은 단순히 create() 메소드 뼈대만 갖는다.
이렇게 구현한 1차적인 코드는 다음과 같다. (자세한 코드는 git 커밋기록을 들여다 볼 것)
아래의 LineCreator, TriangleCreator, RectangleCreator 로직은 비슷한 방식이다.
이 코드를 다음과 같이 더욱 간단히 줄일 수 있다.
첫번째 Line에서 사용된 방식은 익명 클래스이다. Java7까지 사용됬으며, 보다시피 기존의 LineCreator와 같은 이름을 부여하지 않는 방식이다.
두번째 Triangle에서 사용된 방식은 람다이다. 당연히 Java8부터 추가된 개념으로, 익명클래스에서 불필요한 부분을 더 줄여 input/output값만 남겨둔다.
세번째 Rectangle에서 사용된 방식도 마찬가지다. 단 이 방식은 FigureCreator의 메소드가 하나일때만 사용할 수 있다. 이 경우 메소드가 하나이므로 자동으로 create()를 호출하고 있다.
또는 상속을 사용하지 않는다면, FigureCreator 인터페이스를 없애고 다음과 같이 map에 Function을 바로 넣어버릴 수 도 있다.
안봐도 알겠지만, Map구조를 사용하기전 if문 구현방식은
points의 사이즈가 2/3/4인지 if문으로 3번 비교하고
각각 바로 return new Line(points);와 같이 돌려주는 방식이다.
'General, Java' 카테고리의 다른 글
객체지향의 5대원칙 : SOLID (0) | 2019.09.14 |
---|---|
if문을 없애기 위한 노력 (0) | 2019.09.14 |
Apache Library - StringUtils Class (0) | 2019.09.14 |
용어정리 - DTO vs VO / DAO / POJO (0) | 2019.09.14 |
Java) Unit Test, TDD (단위테스트, 테스트 주도 개발) (0) | 2019.09.14 |
- Total
- Today
- Yesterday
- 회고
- dfs
- JPA
- webhacking.kr
- bfs
- Data Structure
- queue
- 해외여행
- FRAGMENT
- 웹해킹
- Algorithm
- brute-force
- 개발자
- C
- javascript
- 프로그래머스
- OneToMany
- Java
- git
- 리버싱
- reversing
- socket
- 우아한 테크코스
- Android Studio
- Vo
- Android
- sort
- graph
- Stack
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |