java Composite Pattern 실습해보기

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

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

composite

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

코드

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

public interface Feature {
	public void print();
}

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

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문으로 차례대로 출력하게 했습니다.

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

public class File implements Feature{

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

}

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

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();
	}

}

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

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

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

Written on February 10, 2018