컴포지트 패턴
컴포지트 패턴은 간단하게 말해 단일객체든 객체들의 집합이든 같은 방법으로 취급하는 것이다. 다시 말해, 개별적인 객체들과 객체들의 집합간의 처리 방법의 차이가 없을 경우 사용하면 된다. 여시거 컴포지트의 의미는 일부 또는 그룹을 표현하는 객체들을 트리 구조로 구성한다는 것.
UML만드는법을 모른다... 공부해서 수정해야겠다..ㅠㅠ
컴포지트 패턴의 활용
파일시스템을 간단하게 구현해보자. 우선 간단하게 파일 클래스를 만들어보자.
class File{
private String name;
}
그리고 파일을 담을 수 있는 디렉토리 클래스를 만들어보자.
class Directory{
private String name;
private List<File> children;
public void add(File file){
...
}
}
디렉토리 클래스는 자신의 이름과 파일들을 가질 수 있습니다. add() 메소드를 이용해 파일을 추가할 수도 있지요. 근데 이 구조로는 디렉토리 안에 디렉토리가 있는 것을 어떻게 표현해야 할까요?
//파일과 폴더의 근간이 되는 인터페이스.
interface Node{
public String getName();
}
class File implements Node{
private String name();
public String getName(){ return this.name ;}
}
class Directory implement Node{
private String name();
private List<Node> children;
public String getName(){ return this.name; }
public void add(Node node){
children.add(node);
}
}
위와 같은 구조로 변경한다면 폴더안의 폴더를 나타낼 수 있다.
[참조] http://jdm.kr/blog/217