[디자인 패턴] 디자인패턴
소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위해 검증된 해결책을 제공하는 재사용 가능한 설계 방법
특정 문제를 해결하기 위한 방법을 체계적으로 정리한 것으로, 개발 과정에서 일관성과 효율성을 높여줌
디자인 패턴의 장점 - 재사용성, 가독성, 유지보수성, 확장성, 안정성과 신뢰성
디자인 패턴은 크게 생성 패턴, 구조 패턴, 행위 패턴으로 분류
1. 생성 패턴 (Creational Patterns)
생성 패턴은 객체 생성 과정에서 유연성과 재사용성을 높이기 위해 사용
싱글톤 패턴 (Singleton Pattern):
특정 클래스의 인스턴스가 하나만 생성되고, 전역적으로 그 인스턴스를 접근할 수 있도록 함
예를 들어, 데이터베이스 연결 객체가 하나만 존재해야 할 때 사용
팩토리 메소드 패턴 (Factory Method Pattern):
객체 생성의 구체적인 클래스를 지정하지 않고, 상위 클래스에서 객체를 생성하는 인터페이스를 정의하는 패턴
구체적인 클래스의 인스턴스를 생성할 책임을 서브클래스로 위임
추상 팩토리 패턴 (Abstract Factory Pattern):
관련 객체들을 생성하기 위한 인터페이스를 제공하며, 구체적인 클래스에 의존하지 않고 객체군을 생성할 수 있도록 함
예를 들어, 다양한 UI 테마에 맞는 위젯 세트를 생성하는 경우에 유용
빌더 패턴 (Builder Pattern):
복잡한 객체의 생성 과정을 단계별로 나누어 처리하며, 같은 생성 과정을 통해 서로 다른 표현을 만들 수 있게함
여러 옵션을 가진 복잡한 객체를 생성할 때 사용
프로토타입 패턴 (Prototype Pattern):
기존 객체를 복제하여 새로운 객체를 생성하는 패턴
초기 설정 비용이 큰 객체를 생성할 때 유용
2. 구조 패턴 (Structural Patterns)
구조 패턴은 클래스나 객체를 조합하여 더 큰 구조를 만드는 방법을 제공
어댑터 패턴 (Adapter Pattern):
서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 변환하는 패턴
오래된 라이브러리와 새로운 시스템을 통합할 때 사용
데코레이터 패턴 (Decorator Pattern):
객체에 기능을 동적으로 추가할 수 있도록 하는 패턴
GUI 컴포넌트에 추가 기능을 부여할 때 유용
프록시 패턴 (Proxy Pattern):
객체에 대한 접근을 제어하기 위해 대리자를 사용하는 패턴
원격 객체에 대한 접근을 로컬 객체처럼 처리할 때 사용
컴포지트 패턴 (Composite Pattern):
객체들을 트리 구조로 구성하여 부분-전체 계층을 구현하는 패턴
파일 시스템의 디렉토리 구조를 구현할 때 유용
퍼사드 패턴 (Facade Pattern):
복잡한 서브시스템에 대한 간단한 인터페이스를 제공하는 패턴
복잡한 라이브러리의 간단한 인터페이스를 제공할 때 사용
브리지 패턴 (Bridge Pattern):
구현과 추상을 분리하여 서로 독립적으로 변경할 수 있도록 하는 패턴
다양한 플랫폼에서 동작하는 그래픽 라이브러리를 개발할 때 유용
3. 행위 패턴 (Behavioral Patterns)
행위 패턴은 객체나 클래스 사이의 상호작용과 책임 분배를 정의하는 패턴
옵저버 패턴 (Observer Pattern):
객체의 상태 변화에 따라 다른 객체들에게 통지하고 자동으로 갱신되도록 하는 패턴
이벤트 시스템이나 MVC 패턴에서 사용
스트래티지(전략) 패턴 (Strategy Pattern):
알고리즘을 캡슐화하여 서로 교환 가능하게 만드는 패턴
다양한 정렬 알고리즘을 교체하면서 사용할 때 유용
커맨드 패턴 (Command Pattern):
요청을 객체로 캡슐화하여 요청에 대한 로그, 큐잉, 취소 등을 지원하는 패턴
실행 취소 기능을 구현할 때 사용
상태 패턴 (State Pattern):
객체의 내부 상태에 따라 행동이 달라지도록 상태를 캡슐화하는 패턴
상태에 따라 동작이 달라지는 상태 머신을 구현할 때 유용
템플릿 메소드 패턴 (Template Method Pattern):
상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 구현을 제공하는 패턴
알고리즘의 기본 구조는 동일하지만 세부 구현이 다른 경우에 사용
미디에이터 패턴 (Mediator Pattern):
객체들 간의 복잡한 통신을 중재자를 통해 처리하여 객체들 간의 결합도를 줄이는 패턴
채팅 시스템에서 여러 사용자 간의 메시지 교환을 관리할 때 유용
인터프리터 패턴 (Interpreter Pattern):
언어의 문법을 표현하고 해석하는 패턴
계산기 프로그램이나 스크립트 언어를 해석할 때 사용
참고
https://m.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8616098823
[Design pattern] 많이 쓰는 14가지 핵심 GoF 디자인 패턴의 종류
디자인 패턴을 활용하면 단지 코드만 ‘재사용’하는 것이 아니라, 더 큰 그림을 그리기 위한 디자인도 재사용할 수 있습니다. 우리가 일상적으로 접하는 문제 중 상당수는 다른 많은 이들이 접
m.hanbit.co.kr
소프트웨어 디자인 패턴 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결
ko.wikipedia.org