객체지향 디자인패턴 2

핫다리·2023년 3월 12일

CS

목록 보기
17/46

movie

Facade 패턴

한 작업에서 여러 클래스를 생성하여 복잡한 작업을 해야할 때, 이 과정들을 외벽 뒤로 숨겨 추상화 할 때 사용. (이미 자주 사용해본 적이 있을 패턴)

Template-method 패턴

어떤 같은 형식을 지닌 특정 작업들의 세부 방식을 다양화 하고자 할 때 사용.

어떤 일을 수행하는 몇가지 방법이 있는데 그 전반적 과정에 공통된 절차가 있을 때 코드를 효율적으로 짜기 위해 만들어진 패턴

부모 클래스에 전반 과정을 수행하는 메인 메소드가 있고, 그 과정 가운데 세부 메소드가 있음
자식 클래스는 과정을 수행하는 세부 메소드를 오버라이딩.

Decorator 패턴

특정 클래스의 객체들이 할 수 있는 일을 여러가지 두고 각 객체마다 사용자가 원하는 대로 골라 시키거나 기능들을 필요에 따라 장착할 수 있도록 할 때 사용된다.

예: 게임에서 전투기가 아이템을 먹을 때마다 공격시 발사하는 무기들이 추가됨

객체가 생성자 변수로 다른 객체 안에 들어감으로써 그 실행하는 메소드의 행동이 추가되도록 한다.

Factory-method 패턴

팩토리 메소드 패턴은 클래스의 인스턴스를 만드는 일을 서브 클래스에게 맡기는 것이다. (생성자를 호출하는 클래스)

예: Component class를 상속하는 Button, Switch, Dropdown 클래스가 있을 때, new Button(), new Switch()와 같은 객체 생성 코드를 CompFactory class에 구현하여 CompFactory.getComp(컴포넌트 종류) 이런식으로 객체를 생성한다.

장점

  • 팩토리 클래스를 사용하면 객체 생성부분(Button에 prop이 추가된다거나)이 변경되었을 때, 코드 여기저기에서 해당 객체의 생성코드를 변경하지 않고도 팩토리 클래서만 수정!
  • 따라 객체를 생성해 가져오는 일을 팩토리 클래스에 위임해버림으로써, 개발자들은 각 Button, Switch 등 세부 클래스에 대해 알 필요가 없게 한다.

Abstract-factory 패턴

팩토리 메소드 패턴에 한단계 더 추상화가 입혀진 패턴

특정 객체들을 찍어낼 공장인 팩토리도 여러 종류로 건설할 수 있도록 함

Mediator 패턴

특정 이벤트에 반응해서 관련된 다른 클래스들에 알려주는 일을 mediator 중재자 역할을 하는 클래스에 전담시키는것

비유: 거래처에 전화를 돌릴 외주업체를 따로 두는 것
회사(N) - 중재자 (외주업체 1) - 거래처(N) : 중재자를 중심으로 회사와 거래처가 N:N관계가 될 수 있다

여러 클래스들의 관계가 특정 이벤트들을 중심으로 복잡하게 얽힌 설계에서 유용하게 사용

Composite 패턴

포함하는 것과 포함되는 것들이 같은 방식으로 다뤄질 수 있도록 할 때 컴포지트 패턴 사용

예: 컴퓨터의 폴더 시스템과 유사함. 폴더와 파일은 다른 종류이지만, 둘다 이름 바꾸기, 용량구하기, 삭제하기 등의 명령을 받을 수 있음

profile
일단 만들고 본다

0개의 댓글