[java] 멤버 패턴
멤버 패턴을 사용하는 이유
멤버 패턴을 사용하는 이유 중 하나는 개별 객체를 직접 참조하지 않고 그룹화된 객체들을 관리하기 위함입니다. 또한, 특정 작업을 수행할 때 모든 객체에 대해 동일한 동작을 수행할 수 있어 유용합니다.
멤버 패턴의 구조
멤버 패턴은 보통 Component, Leaf, Composite으로 구성됩니다.
- Component: 모든 객체에 대한 일반적인 인터페이스를 정의합니다. Leaf와 Composite 클래스는 모두 이 인터페이스를 구현합니다.
- Leaf: Leaf 클래스는 Leaf나 Composite 객체에 대한 동작을 정의합니다.
- Composite: Composite 클래스는 그 자체로 Leaf와 Composite 객체를 가질 수 있으며, Leaf와 Composite 객체에 대한 동작을 정의합니다.
Java에서의 멤버 패턴 예제
다음은 Java에서 멤버 패턴을 구현하는 간단한 예제 코드입니다.
public interface Component {
void operation();
}
public class Leaf implements Component {
@Override
public void operation() {
System.out.println("Leaf operation");
}
}
import java.util.ArrayList;
import java.util.List;
public class Composite implements Component {
private List<Component> children = new ArrayList<>();
public void add(Component component) {
children.add(component);
}
public void remove(Component component) {
children.remove(component);
}
@Override
public void operation() {
for (Component component : children) {
component.operation();
}
}
}
결론
멤버 패턴은 그룹화된 객체를 단일 객체처럼 다룰 수 있게 해주는 유용한 디자인 패턴입니다. Java와 같은 객체지향 언어에서 쉽게 구현할 수 있으며, 코드의 유연성과 확장성을 높일 수 있습니다.
자세한 내용은 Gang of Four의 디자인 패턴에 관한 참고 자료를 확인할 수 있습니다.