디자인패턴

이강용·2024년 2월 1일
0

CS

목록 보기
12/109

디자인패턴이란?

  • 프로그래밍에서 디자인 패턴(Design Pattern)은 소프트웨어 설계 과정에서 자주 발생하는 문제들을 해결하기 위한 재사용 가능한 해결책. 이러한 패턴은 특정 문제를 해결하는 방법을 제시하지만, 완성된 설계나 완성된 코드가 아니라 어떻게 문제를 해결할지에 대한 설명과 가이드라인을 제공함

디자인패턴의 의의

  • 소프트웨어 개발 과정에서 발생하는 일반적인 문제들에 대한 잘 정의된 해결책을 제공하여 코드 재사용성과 유지 보수성을 향상시킴. 이러한 패턴은 개발자 간의 의사소통을 용이하게 하며, 복잡한 설계 결정을 가이드하는 표준화된 방법론을 제공함

디자인패턴의 종류

생성 패턴

패턴 명설명
추상 팩토리
(Abstract Factory Pattern)
서로 관련된 객체를 생성하는 인터페이스를 제공하는 패턴, 이를 구현한 구체적인 클래스를 통해 겍체를 생성, 이 패턴을 사용하면 객체 생성 코드를 클라이언트 코드에서 분리하고, 객체 생성 방식을 유연하게 변경할 수 있음
빌더
(Builder Pattern)
복잡한 객체를 생성하는 과정을 캡슐화하여, 객체 생성의 일련의 과정을 간소화하고 유연하게 만듦, 객체 생성에 필요한 많은 단계를 가지는 경우에 유용하며, 단계별로 객체를 생성할 수 있도록 함
팩토리 메소드
(Factory Method Pattern)
객체 생성을 하위 클래스에게 위임하여, 객체 생성 과정을 캡슐화하고 유연성을 높임, 생성할 객체의 타입을 인터페이스로 추상화하여, 클라이언트 코드와 객체 생성 코드를 분리
싱글톤
(Singleton Pattern)
애플리케이션에서 오직 하나의 인스턴스만을 생성하고, 이를 전역적으로 접근 가능하게 만듦, 이를 통해, 하나의 객체 인스턴스만 사용해야 하는 상황에서 유용함
프로토타입
(Prototype Pattern)
객체의 복사본을 생성하기 위한 패턴, 기존 객체를 복사하여 새로운 객체를 생성하는 방식으로 동작하며, 객체 생성에 드는 비용을 줄일 수 있음, 이를 통해 동적으로 객체의 타입이 변하는 상황에서 유용함

구조 패턴

패턴 명설명
어댑터
(Adapter Pattern)
호환되지 않는 인터페이스를 가진 클래스들을 함께 사용하기 위한 패턴, 기존 클래스를 수정하지 않고, 새로운 클래스를 추가하여 기존 클래스를 감싸서 새로운 인터페이스를 제공
브릿지
(Bridge Pattern)
추상화와 구현을 분리하여 각각 독립적으로 변형할 수 있도록 하는 패턴, 추상화된 클래스와 실제 구현 클래스를 분리하여, 각각 독립적으로 변형할 수 있음
컴포지트
(Composite Pattern)
객체들의 관게를 트리 구조로 구성하여 부분 - 전체 계층을 만들고, 클라이언트에서 객체들을 일관성 있게 다룰수 있도록 하는 패턴
데코레이터
(Decorator Pattern)
객체에 추가적인 기능을 동적으로 첨가하는 패턴, 기존 객체를 수정하지 않고, 새로운 객체를 생성하여, 추가적인 기능을 첨가함
퍼사드
(Facade Pattern)
복잡한 서브 시스템을 단순화된 인터페이스를 제공하여 사용자가 쉽게 접근할 수 있도록 하는 패턴
플라이웨이트
(Flyweight Pattern)
객체 생성 비용이 큰 객체들을 공유하며 생성할 수 있도록 하여 메모리 사용을 최적하는 패턴
프록시
(Proxy Pattern)
객체 대한 접근을 제어하거나 객체에 대한 추가적인 작업을 처리할 수 있도록 대리인 객체를 제공하는 패턴
프로퍼티
(Property Pattern)
객체 내부의 데이터를 캡슐화하여, 데이터를 보호하고, 캡슐화된 데이터에 대한 일관성 있는 접근을 제공하는 패턴

행동 패턴

패턴 명설명
책임 연쇄
(Chain of Responsibility Pattern )
요청을 처리할 수 있는 객체들을 연결하여, 각 객체가 요청을 처리하지 못할 경우, 다음 객체로 요청을 전달하는 패턴
커맨드
(Command Pattern)
요청을 객체로 캡슐화하여, 요청을 발생시키는 객체와 요청을 수행하는 객체를 분리하는 패턴
인터프리터
(Interpreter Pattern)
문법 규칙을 클래스화하여, 문장을 해석하고 처리하는 패턴
이터레이터
(Iterator Pattern)
컬렉션 객체에 대한 반복 작업을 추상화하여, 컬렉션의 내부 구조를 노출하지 않고 요소들에 접근할 수 있는 패턴
미디에이터
(Mediator Pattern)
객체들 사이의 복잡한 상호 작용을 조정하기 위해 중재자 역할을 수행하는 패턴
메멘토
(Memento Pattern)
객체의 상태를 저장하고, 이전 상태로 복원하는 패턴
옵저버
(Observer Pattern)
객체의 상태 변화를 감지하여, 이를 다른 객체에 알리는 패턴
스테이트
(state Pattern)
객체의 상태에 따라 동작을 변경할 수 있도록하여, 객체의 상태 변화에 따른 동작을 캡슐화하는 패턴
스트래티지 패턴
(Strategy Pattern)
객체의 동작을 여러 알고리즘 중에서 선택하여 변경할 수 있도록 하여, 동작을 캡슐화하는 패턴
템플릿 메소드
(Template Method Pattern)
객체의 동작을 슈퍼 클래스에서 정의하고, 서브 클래스에서 구체적인 구현을 담당하는 패턴
profile
HW + SW = 1

0개의 댓글