[디자인 패턴] 디자인 패턴의 종류

듀듀·2023년 6월 10일
0
post-thumbnail

생성 패턴 (Creational Patterns)

객체 인스턴스를 생성하는 패턴, 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어준다. / 캡슐화 + 유연성을 목표로 하는 디자인 패턴

추상 팩토리 (Abstract Factory)

상위 클래스의 객체 생성코드를 하위클래스가 상속받음 (상위 클래스를 변경하면 하위 클래스가 자동 변경됨)

빌더 (Builder)

분리된 인스턴스를 조합하여 객체를 생성함. 같은 객체를 생성해도 다른 결과를 도출할 수 있다.

팩토리 메서드 (Factory method)

객체 생성 코드를 하위클래스에서 구체화한다. 상위 클래스는 인터페이스만 제공한다.

팩토리 메서드 패턴 보러가기

팩토리 메서드 패턴 vs 추상 팩토리 패턴 보러가기

프로토타입 (Prototype)

원본을 복제하는 형태로 객체를 생성한다. (비용이 저렴하다)

싱글턴 (Singleton)⭐️

클래스 내에 생성되는 인스턴스가 하나만 필요할 때 사용한다. (동시 참조 X)

싱글톤 패턴 보러가기


구조 패턴 (Structural Patterns)

클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 패턴, 구조가 복잡한 시스텐 개발에 도움을 줄 수 있다.

어댑터 (Adaptor)

일치하지 않는 인터페이스 변환 (전류 어댑터 처럼)

브릿지 (Bridge)

추상층(기능)과 구현층(구체화)을 분리하여 서로 독립적 확장 가능

합성 (Composite)

트리구조로 구성

데코레이터 (Decorator)

클래스에 기능을 추가하기 위해 다른 객체를 덧붙이는 형태

파사드 (Façade) ⭐️

다수의 서브클래스들의 통합 인터페이스를 제공할 수 있는 Wrapper 객체 구성

플라이웨이트 (Flyweight)

다수의 유사 객체 생성이 필요할 때 메모리 절약을 위해 최대한 공유해서 사용하는 형태

프록시 (Proxy)

접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행


행동 패턴 (Behavioral Patterns)

클래스와 객체들이 상호작용이나 방법과 역할을 분담하는 책임 분배에 대한 부분을 정의하고 결합도는 최소화 하는 것을 목표로 함

책임 연쇄 (Chain of Responsibility)

요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴. 각 객체들이 Chain으로 묶여있어 요청이 해결될 때까지 고리를 따라 책임이 넘어간다.

커맨드 (Command)

명령어를 캡슐화하여 재사용하거나 취소할 수 있도록 필요한 정보를 로그에 남기는 형태

인터프리터 (Interpreter)

언어에 문법 표현을 정의하는 패턴

반복자 (Iterator)

접근이 잦은 객체는 동일한 인터페이스를 사용하도록 하는 패턴

중재자 (Mediator)

상호작용을 캡슐화하여 결합도를 낮추는 패턴

메멘토 (Memento)

특정 시점에서의 객체 내부 상태를 객체화함으로서 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴이다. (Ctrl+Z 기능이 이 패턴의 대표적 기능)

옵저버 (Observer)

이벤트 발행과 구독, 상태 변화 전달. 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달하는 패턴. (카톡의 읽음 표시 기능)

상태 (State)

이벤트를 객체 상태에 따라 다르게 처리해야할 때 사용. (카톡 알림설정같은)

전략 (Strategy)

동일 계열 알고리즘 상호 교환, 독립적 사용

템플릿 메소드 (Template method)

상위에서 인터페이스를 정의하고 하위에서 구체화시킴 (유지보수 용이)

방문자 (Visitor)

처리 기능을 별도의 클래스로 구성. 분리된 처리 기능은 각 클래스를 방문하여 수행함

profile
나는 내 의지대로 된다.

0개의 댓글