본문 바로가기
반응형

SWE/C++ OOP43

[디자인 패턴] Composite Pattern 컴포지트 패턴 Composite Pattern 컴포지트 패턴 개념 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만든 패턴이다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(Composite)를 똑같은 방법으로 다룰 수 있다. 예시 예를 들어, 펜케이크하우스메뉴 식당, 저녁메뉴 식당, 카페메뉴 식당을 모두 합쳐서 Client가 한번에 관리한다고 하자. Client는 식당의 이름만 출력할 수도 있어야하고, 식당의 서브항목인 메뉴아이템도 모두 출력할 수 있어야하고, 특정 식당에 디저트라는 카테고리를 추가하여 그 디저트에 또 다시 여러가지 메뉴를 추가할 수 있어야 한다. 그리고 디저트메뉴의 하위항목들에 대해서만 반복작업을 한다든가 하는 식으로 유연하게 사용이 가능하여야 한.. 2021. 11. 21.
[디자인 패턴] Iterator Pattern 이터레이터 패턴 Iterator Pattern 이터레이터 패턴 개념 예를 들어 객체들을 배열, 스택, 해시테이블 등의 컬렉션에 넣어서 보관할 수 있다. 그런데 클라이언트가 해당 객체들에게 일일이 접근하는 작업을 원할 수 있다. 이런 경우, 사용하는 것이 이터레이터 패턴이다. 객체를 저장하는 방식은 보여주지 않으면서도 클라이언트가 객체들에게 일일이 접근할 수 있게 해주는 방법이다. 이 패턴의 구현 방법은 반복 작업을 Iterator 인터페이스를 이용하여 캡슐화 하는 것이다. 예시 아침 메뉴를 파는 팬케이크 하우스와 저녁 메뉴를 판매하는 식당이 합병하려고 한다. 이 때, 서로 각자의 스타일로 메뉴를 구현해놨는데, 두 메뉴를 합쳐서 사용해야 한다. 두 메뉴를 합치는 방법에 대해 이야기 해보자. 참고로 팬케이크 하우스는 Arr.. 2021. 10. 30.
[디자인 패턴] Template Method Pattern 템플릿 메소드 패턴 Template Method Pattern 템플릿 메소드 패턴 개념 템플릿 메소드 패턴이란 메소드에서 알고리즘의 골격을 정의한다. 그리고 알고리즘의 여러 단계 중 일부는 서브 클래스에서 처리한다. 예시 커피 만드는 법과 홍차 만드는 법은 같은 알고리즘을 가지고 있다. 커피 만드는 법 홍차 만드는 법 1) 물을 끓인다. 2) 끓는 물에 커피를 우려낸다. 3) 커피를 컵에 따른다. 4) 설탕과 우유를 추가한다. 1) 물을 끓인다. 2) 끓는 물에 차를 우려낸다. 3) 차를 컵에 따른다. 4) 레몬을 추가한다. (1)번과 (4)번에 어떤 재료를 사용하느냐의 차이만 있을 뿐 큰 알고리즘은 같다. 이럴 경우 (1)~(4)를 하나의 알고리즘으로 메소드에 넣고, 차이점이 있는 (2)번과 (4)번만 각각의 서브 클래스.. 2021. 10. 17.
[디자인패턴] Facade Pattern 퍼사드 패턴 Facade Pattern 퍼사드 패턴 개념 퍼사드 패턴이란 여러 서브 시스템의 작업들을 하나의 인터페이스로 통합하여 제공해주는 것이다. 예시 예를 들어 집에서 영화보는 것에 대해 생각해보자 영화를 보려고 하면 여러가지 사전 작업들이 필요하다. 빔 프로젝터를 켜고, 스크린을 내리고, 조명 밝기를 조절하고 등... 이 여러가지 작업들은 영화를 볼 때마다 반복적으로 수행되어야 하는데, 이들을 하나로 묶어서 인터페이스로 제공하는 것이 퍼사드 패턴이다. public void watchMovie(String movie) { projector.on(); screen.down(); lights.dim(10); ... } 퍼사드 클래스의 형태 위의 watchMovie 메소드는 HomeTheaterFacade라는 퍼사드.. 2021. 9. 29.
반응형