Search

어그리게이트 패턴

어그리게이트 패턴

어그리게이트 패턴은 객체 지향 디자인 패턴 중 하나로, 여러 객체를 모은 집합체를 다루는 패턴이다. 이 패턴은 컬렉션 객체와 관련이 있다.

패턴 구성 요소

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
복사

결론

어그리게이트 패턴은 여러 객체를 모은 집합체를 다루는 데 유용한 디자인 패턴이다. 이 패턴은 객체 지향 소프트웨어 엔지니어링에서 자주 사용되며, 컬렉션 객체와의 관련성으로 더욱 중요하다.