반복자 패턴 알아보기
- 반복자 패턴은 Iterator 인터페이스에 의존한다. 이 인터페이스가 있으면 배열, 리스트, 해시테이블은 물론, 모든 종류의 객체 컬렉션에 반복자를 구현할 수 있다.
- 컬렉션을 객체를 모아 놓은 것에 불과합니다. 리스트, 배열, 해시테이블과 같이 다양한 자료구조에 컬렉션을 보관할 수 있는데, 어떤 자료 구조를 사용하든 결국 컬렉션은 컬렉션입니다. 컬렉션은 집합체(aggregate)라고 부르기도 합니다.
반복자 패턴의 정의
- 반복자 패턴(Iterator Pattern)은 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공합니다.
- 이 패언틀 사용하면 집합체 내에서 어떤 식으로 일이 처리되는지 전혀 모르는 상태에서 그 안에 들어있는 모든 항목을 대상으로 반복 작업을 수행할 수 있습니다.
- 또 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 종류에 관계없이 모든 집합체에 사용할 수 있는 다형적인 코드를 만들 수 있습니다.
- 또 반복자 패턴을 사용하면 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체가 맡게 된다는 사실도 중요합니다. 이러면 집합체의 인터페이스와 구현이 간단해지고 집합체는 반복 작업에서 손을 떼고 원래 자신이 할 일(객체 컬렉션 관리)에만 전념할 수 있습니다.
→ 반복자 패턴을 사용하면 내부 구현 방법을 외부로 노출하지 않으면서 집합체에 있는 모든 항목에 일일이 접근할 수 있습니다. 또한 각 항목에 일일이 접근할 수 있게 해 주는 기능을 집합체가 아닌 반복자 객체가 책임진다는 장점도 있습니다. 그러면 집합체 인터페이스와 구현이 간단해지고, 각자에게 중요한 일만을 처리할 수 있게 됩니다.
단일 역할 원칙
- 어떤 클래스에서 맡고 있는 모든 역할은 나중에 코드 변화를 불러올 수 있습니다. 역할이 2개 이상 있으면 바뀔 수 있는 부분이 2개 이상이 되는 것이죠., 이 원칙에 따라 하나의 클래스는 하나의 역할만 맡아야 합니다.
- 디자인 원칙 : 어떤 클래스가 바뀌는 이유는 하나뿐이어야 한다.
- 응집도(cohesion)란 한 클래스 또는 모듈이 특정 목적이나 역할을 얼마나 일관되게 지원하는지를 나타내는 척도입니다. 어떤 모듈이나 클래스의 응집도가 높다는 것은 서로 연관된 기능이 묶여있다는 것을, 응집도가 낮다는 것은 서로 상관 없는 기능들이 묶여있다는 것을 뜻합니다.
- 사실 응집도는 단일 역할 원칙에서만 쓰이는 용어는 아니고, 좀 더 광범위한 용도로 쓰이는 용어입니다. 하지만 단일 역할 원칙과 응집도는 서로 밀접하게 연관되어 있습니다. 이 원칙을 잘 따르는 클래스는 2개 이상의 역할을 맡고 있는 클래스에 비해 응집도가 높고, 관리하기도 쉽습니다.
컴포지트 패턴의 정의
- 컴포지트 패턴(Composite Pattern)으로 객체를 트리구조로 구성해서 부분-전체 계층 구조를 구현합니다. 컴퓨지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있습니다.