컴포지트 패턴

컴포지트 패턴은 간단하게 말해 단일객체든 객체들의 집합이든 같은 방법으로 취급하는 것이다. 다시 말해, 개별적인 객체들과 객체들의 집합간의 처리 방법의 차이가 없을 경우 사용하면 된다. 여시거 컴포지트의 의미는 일부 또는 그룹을 표현하는 객체들을 트리 구조로 구성한다는 것.


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

'CS > 디자인패턴' 카테고리의 다른 글

MVC패턴  (0) 2017.03.20

MVC 패턴

사용자의 뷰페이지(View)와 데이터 혹은 비즈니스로직(Model) 그리고 이들 상호간의 흐름제어(Contoller)하는 비즈니스 로직을 분리하여 서로간의 영향없이 모듈을 재사용, 확장 가능한 구조적 패턴. View와 Model을 분리하여 데이터처리 로직이 중복되는 것을 막고, 로직과 Model을 재사용하는데 의의를 둠.
 어플리케이션의 흐름제어나 사용자의 요청처리는 Controller에서 집중처리.


Model = 비즈니스 영역의 상태 정보를 처리.

View = 비즈니스 영역에 대한 뷰를 담당.

Control = 사용자의 입력 및 흐름제어를 담당.



모델1 방식과 MVC패턴의 비교 및 처리절차.

<모델1 방식>


<MVC 방식>


모델1 방식과 MVC방식의 가장 큰 차이점은 컨트롤러 역할을 JSP가 아니라 Servlet에서 한다는 것이다. 모델1방식은 JSP에서 VIEW역할과 Controller역할을 같이 하기 때문에 view코드와 controller코드가 같이 있기때문에 복잡하며 , 로직이 중복되는 문제가 발생함. 이에 반해 MVC 방식은 MVC 각각의 역할이 나


MVC패턴의 문제점 및 대안방안

MVC패턴의 문제점

VIEW와 MODEL 간의 의존성을 완벽히 분리할 수 없는데다 패턴의 모호함때문에 해석이 제각각 달라지며 여러가지 변형이 생김. 

대안방안

MVP(Model,View Interface, Presenter) 패턴에서는 View와 Model의 완벽한 분리가 이루어짐. - MVP에 대해서는 추후 다시 정리.

[출처] http://lefigaro.tistory.com/39


'CS > 디자인패턴' 카테고리의 다른 글

컴포지트 패턴(Composite Pattern)  (0) 2017.03.21

+ Recent posts