일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- MX Component
- oracle
- Visual Studio Code
- 크롤링
- sql developer
- tensorflow
- pymssql
- windows10
- 텐서플로우
- django
- vscode
- 딥러닝
- c#
- Python
- M2M
- rs422
- Serial
- MSSQL PYTHON
- 오라클
- scrapy
- MSSQL
- MEAN Stack
- 파이썬
- matplot
- 자본주의
- 장고
- PYTHON MSSQL
- 윈도우10
- 티스토리 초대장
- rs485
- Today
- Total
안까먹을라고 쓰는 블로그
[C#] 디자인 패턴 본문
https://refactoring.guru/ko/design-patterns/abstract-factory
추상 팩토리 패턴
/ 디자인 패턴들 / 생성 패턴 추상 팩토리 패턴 다음 이름으로도 불립니다: Abstract Factory 의도 추상 팩토리는 관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있
refactoring.guru
생성 패턴 (Creation pattern)
- 추상 팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리 메서드(Factory method)
- 프로토타입(Prototype)
- 싱글턴(Singleton)
구조 패턴 (Structural pattern)
- 어댑터(adapter)
- 브리지(bridge)
- 복합체(Complex)
- 데코레이터(Decorator)
- 퍼사드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
행동 패턴 (Behavior pattern)
- 책임 연쇄(Chain of Responsibility)
- 반복자(Iterator)
- 메멘토(Memento)
- 상태(situation)
- 템플릿 메서드(Template method)
- 커맨드(Command)
- 중재자(moderator)
- 옵서버(Observer)
- 전략(Strategy)
- 비지터(Visitor)
이름 | 설명 | 목적 | 핵심 아이디어 | 사용 예시 | 적용 조건 |
Singleton | 클래스의 인스턴스를 하나만 생성하고 전역 접근점을 제공하는 패턴 | 리소스 관리 및 글로벌 상태 공유 | 단일 인스턴스를 생성하고 이를 재사용하는 방식 | 로그 서비스, 설정 관리, 데이터베이스 연결 | 클래스가 하나의 인스턴스만 필요할 때 |
Factory Method | 객체 생성 인터페이스를 정의하되, 서브클래스가 생성 객체 유형을 변경할 수 있도록 하는 패턴 | 코드 의존성을 줄이고 유지보수를 용이하게 함. 객체 생성의 유연성 제공 |
객체 생성 과정을 캡슐화하여 코드 종속성을 줄임 | 데이터베이스 연결 팩토리, API 클라이언트 생성 | 객체 생성 로직이 자주 변경되거나 확장 가능해야 할 때, 다양한 객체를 생성해야 하는 상황 |
Abstract Factory | 관련된 객체군을 구체적인 클래스 지정 없이 생성할 수 있도록 하는 패턴 | 객체군 간의 일관된 생성 보장 | 여러 제품군을 생성하는 팩토리 메서드를 제공 | UI 테마 구성 요소 생성, 데이터베이스 드라이버 팩토리 | 여러 관련 객체를 동시에 생성해야 할 때 |
Builder | 복잡한 객체를 단계적으로 생성할 수 있도록 하는 패턴 | 복잡한 객체의 유연한 생성 | 동일한 생성 코드로 다른 표현을 지원 | SQL 쿼리 빌더, HTML 문서 빌더 | 객체가 복잡하고 다양한 표현이 필요할 때 |
Observer | 한 객체의 상태 변화에 따라 의존 객체들이 자동으로 업데이트되도록 하는 패턴 | 이벤트 기반 시스템 구현 | 상태 변화를 감지하고 알림을 전달하는 메커니즘 | UI 이벤트 핸들러, 실시간 데이터 스트리밍 | 상태 변화 알림이 필요할 때 |
Strategy | 알고리즘 군을 정의하고 이를 캡슐화하여 상호 교환 가능하도록 하는 패턴 | 알고리즘 선택의 유연성 제공 | 알고리즘을 별도의 클래스로 분리하여 동적으로 교체 가능 | 결제 방식 선택, 데이터 정렬 알고리즘 | 다양한 알고리즘을 동적으로 사용해야 할 때 |
Adapter | 서로 다른 인터페이스를 가진 클래스들이 함께 작동할 수 있도록 변환하는 패턴 | 호환성 문제 해결 | 기존 클래스의 인터페이스를 변환하여 새로운 요구사항 충족 | COM 통신, 외부 API 통합 | 기존 코드와 새로운 코드 간의 호환성이 필요할 때 |
Decorator | 객체에 동적으로 새로운 기능을 추가할 수 있도록 하는 패턴 | 기능 확장의 유연성 제공 | 기존 객체를 감싸는 래퍼를 사용하여 기능 추가 | 로그 기능 추가, 권한 검사 기능 | 런타임 중 기능 확장이 필요할 때 |
Command | 요청을 캡슐화하여 실행, 취소 및 기록을 지원하는 패턴 | 요청 처리의 유연성 제공 | 요청을 별도의 객체로 만들어 실행 및 취소 가능하게 함 | 작업 큐 처리, 실행 취소 기능, UI 버튼 이벤트 처리, Undo/Redo 기능 | 요청 실행 및 취소가 필요할 때 |
Template Method | 알고리즘의 구조를 정의하되 세부 단계는 서브클래스에서 구현하도록 하는 패턴 | 알고리즘 구조의 일관성 유지 | 알고리즘 골격을 정의하고 세부 구현은 서브클래스에 위임 | 데이터 처리 파이프라인, UI 렌더링 | 알고리즘 구조는 동일하나 세부 구현이 다를 때 |
위 테이블은 C#에서 현업에서 자주 사용되는 디자인 패턴들을 정리한 것입니다. 각 패턴은 특정 상황에 적합하며 코드 품질과 유지보수성을 향상시키는 데 도움을 줍니다.
✅ 현업에서 패턴 적용이 잘 된 예
기능 | 사용패턴 | 설명 |
인증/로그인 방식 다양화 | Strategy | SNS, 자체 로그인 등 동적 전략 |
유저 권한 제어 | Chain of Responsibility | 권한 조건을 체인으로 처리 |
결제 처리 | Strategy + Factory | 결제 수단마다 다른 전략 + 동적 생성 |
작업 취소 (Undo/Redo) | Command + Memento | 명령을 캡슐화하고 상태 저장 |
이벤트 전파 | Observer or Mediator | UI나 게임 내 상태 변화 전달 |
끝~

'Language' 카테고리의 다른 글
SOLID 원칙이란? (0) | 2025.04.08 |
---|---|
개발 프리 준비 (0) | 2022.03.13 |
개발 프리 관련 (0) | 2022.03.11 |
[Tip] 프로그램 소스코드를 공개하는 사이트 모음집 (0) | 2022.03.07 |
FLEXGRID 참고자료 (0) | 2022.03.02 |