관리 메뉴

안까먹을라고 쓰는 블로그

[C#] 디자인 패턴 본문

Language

[C#] 디자인 패턴

YawnsDuzin 2025. 3. 24. 16:23

 

반응형

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
Comments