반응형

디자인패턴 5

[C#] 디자인 패턴 - Builder Pattern

Builder Pattern은 복잡한 객체의 생성을 단순화하기 위한 디자인 패턴입니다. 객체의 생성과 표현을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 얻을 수 있습니다. 기본 구조 Builder Pattern은 주로 다음 구성 요소로 이루어져 있습니다: Builder: 생성될 객체의 각 부분의 생성과 조립 방법을 정의하는 추상 인터페이스입니다. ConcreteBuilder: Builder의 인터페이스를 구현하는 클래스로, 실제 제품의 구체적인 표현을 정의합니다. Director: Builder 인터페이스의 사용 방법을 정의합니다. Product: 생성될 복잡한 객체를 나타냅니다. 언제 사용해야 하는가? 복잡한 객체의 생성 절차와 그 표현을 분리하고 싶을 때 동일한 생성 절차에서 서로 다른..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Abstract Factory Pattern

Abstract Factory Pattern은 연관된 객체들의 그룹 또는 의존 객체들의 집합을 생성하기 위한 인터페이스를 제공합니다. 이는 상호 교환 가능한 객체 집합을 생성하는 것을 목표로 하며, 객체 생성의 구체적인 클래스를 숨긴 채 각 집합의 공통된 테마나 속성에 따라 객체를 생성합니다. 기본 구조 Abstract Factory Pattern은 주로 다음 구성 요소로 이루어져 있습니다 AbstractFactory: 모든 구체 팩토리의 공통 인터페이스입니다. ConcreteFactory: 실제 객체 집합을 생성하는 구체적인 팩토리입니다. AbstractProduct: 생성되는 제품의 공통 인터페이스입니다. ConcreteProduct: 실제 생성되는 제품입니다. 언제 사용해야 하는가? 시스템이 제품 ..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Factory Method Pattern

Factory Method Pattern은 객체를 생성하는 디자인 패턴 중 하나로, 객체 생성 로직을 하위 클래스로 위임함으로써 인스턴스화를 수행하는 클래스와 실제 생성되는 객체 클래스를 분리합니다. 이 패턴은 객체 생성에 관한 로직을 캡슐화하고, 새로운 타입의 객체 추가 시 코드의 변경을 최소화하는 데 도움을 줍니다. 기본 구조 Factory Method Pattern은 주로 다음의 두 가지 구성 요소로 이루어져 있습니다 Creator: 객체를 생성하는 공통 인터페이스 또는 추상 클래스입니다. ConcreteCreator: 실제 객체를 생성하는 클래스입니다. 언제 사용해야 하는가? 객체 생성과 클래스 구현을 분리하고 싶을 때 시스템에 새로운 객체 타입을 추가할 때 코드 변경을 최소화하고 싶을 때 초기화..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Strategy Pattern

Strategy Pattern은 디자인 패턴 중 하나로, 알고리즘의 구현을 캡슐화하여 그것들을 상호 교체할 수 있도록 만든다. 이 패턴은 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있도록 해줍니다. 기본 구조 Strategy Pattern은 다음과 같은 세 가지 주요 구성 요소로 이루어져 있습니다: Strategy: 이것은 모든 알고리즘(전략)의 공통 인터페이스입니다. ConcreteStrategy: Strategy 인터페이스를 구현한 실제 알고리즘 클래스입니다. Context: Strategy 객체를 사용하는 역할을 합니다. 이는 클라이언트에 의해 설정될 수 있습니다. 언제 사용해야 하는가? 동일한 문제에 대해 여러 가지 해결 방법이 있는 경우 알고리즘이 클래스의 정의와 독립적으로..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Singleton

간단하게 싱글톤을 클래스를 선언하는 방법을 알아본다. 나는 주로 싱글톤을 쓸 때, 다양한 화면에서 데이터가 공유 관리되어야 하거나 통신용 객체를 만들거나, DAO생성을 할 때 주로 쓴다. 싱글톤 객체 생성 public sealed class DataManager { private static readonly DataManager _instance = new DataManager(); public static DataManager GetInstance() { return _instance; } private DataManager() { } } 객체 불러오기 class MainWindowViewModel : BindableBase { private DataManager _dm; public MainWindo..

프로그래밍/C# 2021.05.11
반응형