프로그래밍을 하다보면 비슷한 동작이지만 구현 방법(알고리즘)이 다른 경우를 많이 겪습니다. 예를 들어 외부 메일 가져오기 기능을 구현하려고 합니다. 네이버 메일, 다음 메일, 구글 메일 등을 가져온다고 가정하면 메일을 가져온다에서는 동일한 액션이지만 내부 구현을 살펴보면 호출 API 정보, 필요 파라미터 명 등이 조금씩 다를 수 있습니다. 처음에 네이버 메일와 구글 메일 가져오기만 지원한다면 if문 분기를 통해 다르게 처리할 수 도 있겠지만, 나중에 다음 메일과 네이트 메일 등도 추가적으로 지원한다고 하면 분기가 계속 증가할 것 입니다. 이러면 SOLID 설계 원칙의 개방-폐쇄 원칙(OCP)에 위반하는 코드가 생성될 확률이 커집니다. Strategy(전략) 패턴을 사용하면 이와 같이 같은 문제를 다른 방..
Java 언어에서 배열 arr의 모든 요소를 표시하기 위해서는 다음과 같이 for문을 사용합니다. for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } for문의 변수 i를 통해 배열 arr의 요소에 접근할 수 있습니다. Iterator 패턴은 이런 변수 i의 기능을 추상화해서 일반화 한 것 입니다.Iterator 패턴의 구성은 아래와 같습니다.Iterator(반복자)요소를 순서대로 검색해가는 인터페이스(API) 입니다. 다음 요소가 존재하는지를 얻기 위한 hasNext 메서드와 다음 요소를 얻기 위한 next 메서드를 결정합니다.ConcreteIterator(반복자 구현체)Iterator 인터페이스의 구현체 입니다.Aggregate(..