어그리게이트 패턴
어그리게이트 패턴은 객체 지향 디자인 패턴 중 하나로, 여러 객체를 모은 집합체를 다루는 패턴이다. 이 패턴은 컬렉션 객체와 관련이 있다.
패턴 구성 요소
Aggregate
Aggregate는 집합체를 나타내는 인터페이스이다. 이 인터페이스는 집합체에 대한 Iterator를 반환하는 메소드를 제공한다.
ConcreteAggregate
ConcreteAggregate는 Aggregate 인터페이스를 구현한 클래스이다. 이 클래스는 집합체에 대한 Iterator를 반환하는 메소드를 구현한다.
Iterator
Iterator는 Aggregate가 나타내는 집합체를 순회하기 위한 인터페이스이다. 이 인터페이스는 다음 요소가 있는지를 확인하고, 다음 요소를 반환하는 메소드를 제공한다.
ConcreteIterator
ConcreteIterator는 Iterator 인터페이스를 구현한 클래스이다. 이 클래스는 Aggregate 객체를 순회하기 위한 메소드를 구현한다.
예제
다음은 Java 언어를 사용하여 어그리게이트 패턴을 구현한 예제이다.
public interface Aggregate {
public Iterator createIterator();
}
public class ConcreteAggregate implements Aggregate {
private List<Object> items = new ArrayList<Object>();
public void addItem(Object item) {
items.add(item);
}
public Iterator createIterator() {
return new ConcreteIterator(items);
}
}
public interface Iterator {
public Object next();
public boolean hasNext();
}
public class ConcreteIterator implements Iterator {
private List<Object> items;
private int position = 0;
public ConcreteIterator(List<Object> items) {
this.items = items;
}
public Object next() {
Object obj = items.get(position);
position++;
return obj;
}
public boolean hasNext() {
if (position < items.size()) {
return true;
} else {
return false;
}
}
}
public class Main {
public static void main(String[] args) {
ConcreteAggregate aggregate = new ConcreteAggregate();
aggregate.addItem("item1");
aggregate.addItem("item2");
aggregate.addItem("item3");
Iterator iterator = aggregate.createIterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Plain Text
복사
결론
어그리게이트 패턴은 여러 객체를 모은 집합체를 다루는 데 유용한 디자인 패턴이다. 이 패턴은 객체 지향 소프트웨어 엔지니어링에서 자주 사용되며, 컬렉션 객체와의 관련성으로 더욱 중요하다.