Post

java Composite Pattern 실습해보기

java Composite Pattern 실습해보기

오늘 java로 composite Pattern을 실습해보려 합니다.

컨테이너와 내용을 동일시하는 패턴입니다.

composite

컴포지트(composite)는 객체들의 관계를 트리 구조로 구성한다는 의미입니다.

코드

파일과 폴더를 구현해보는 예제가 유명한 것 같아서 따라서 실습해보았습니다.

1
2
3
public interface Feature {
	public void print();
}

인터페이스를 이용하여 파일과 폴더에 공통된 메소드를 추상 메소드로 만들어줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.ArrayList;
import java.util.List;

public class Folder implements Feature {
	private List<Feature> private_folder = new ArrayList<Feature>();

	@Override
	public void print() {
		for(Feature i : private_folder) {
			i.print();
		}
	}
	
	public void add(Feature t) {
		private_folder.add(t);
	}
}

폴더 클래스에서는 우선 폴더에 필요한 배열을 arraylist로 구현해줍니다.

굳이 외부에 보여줄 필요가 없으므로 private으로 접근 지정자를 설정해줍니다.

인터페이스를 구현하기 위해 가져왔으므로 미구현된 메소드를 구현합니다.

배열을 출력하려면 for-each문으로 차례대로 출력하게 했습니다.

마지막으로 배열에 인터페이스 타입의 객체를 추가하기위한 공개 메소드를 추가합니다.

1
2
3
4
5
6
7
8
public class File implements Feature{

	@Override
	public void print() {
		System.out.println("print");
	}

}

파일 클래스 역시 인터페이스를 구현하기위해 만들어줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Main {

	public static void main(String[] args) {
		 Folder test = new Folder();
		 
		 File t = new File();
		 
		 test.add(t);
		 test.add(t);
		 test.add(t);
		 
		 test.print();
	}

}

테스트를 위한 메인 클래스는 간단하게 작성했습니다.

폴더 객체를 만들어주고, 파일 객체도 만듭니다.

폴더에 파일을 추가하고, 출력도 할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.