728x90
안녕하세요!
이번 글에서는 C#에서의 디자인 패턴에 대해 알아보겠습니다.
디자인 패턴은 소프트웨어 아키텍처를 설계할 때 유용한 구조화된 해결책입니다.
이번 포스팅에서는 주요한 디자인 패턴의 개념과 예제를 살펴보도록 하겠습니다.
디자인 패턴
- 디자인 패턴은 소프트웨어 개발 과정에서 자주 발생하는 문제를 해결하기 위한 공통된 구조와 원리를 가진 설계 패턴입니다.
- 이를 사용하면 소프트웨어의 유지보수성, 확장성, 재사용성을 높일 수 있습니다.
주요 디자인 패턴
1. 싱글톤 패턴 (Singleton Pattern)
- 싱글톤 패턴은 단 하나의 인스턴스만을 생성하고, 이를 전역적으로 접근 가능하게 하는 패턴입니다.
- 주로 자원을 공유해야 할 때 사용됩니다.
public class Singleton
{
private static Singleton instance;
private Singleton() { }
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
2. 팩토리 메서드 패턴 (Factory Method Pattern)
- 팩토리 메서드 패턴은 객체를 생성하는 인터페이스를 정의하고, 이를 서브 클래스에서 구현하여 객체의 생성을 캡슐화하는 패턴입니다.
- 객체의 생성과 사용을 분리할 수 있으며, 유연한 구조를 가질 수 있습니다.
public abstract class Product
{
public abstract void Create();
}
public class ConcreteProductA : Product
{
public override void Create()
{
Console.WriteLine("ConcreteProductA created");
}
}
public class ConcreteProductB : Product
{
public override void Create()
{
Console.WriteLine("ConcreteProductB created");
}
}
public abstract class Creator
{
public abstract Product FactoryMethod();
}
public class ConcreteCreatorA : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProductA();
}
}
public class ConcreteCreatorB : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProductB();
}
}
3. 옵저버 패턴 (Observer Pattern)
- 옵저버 패턴은 객체 사이의 일대다 의존 관계를 정의하는 패턴입니다.
- 한 객체의 상태가 변경되면, 이에 의존하는 다른 객체들에게 자동으로 알림을 전달합니다.
public interface IObserver
{
void Update(string message);
}
public class ConcreteObserver : IObserver
{
private string name;
public ConcreteObserver(string name)
{
this.name = name;
}
public void Update(string message)
{
Console.WriteLine($"{name} received message: {message}");
}
}
public interface ISubject
{
void Attach(IObserver observer);
void Detach(IObserver observer);
void Notify(string message);
}
public class ConcreteSubject : ISubject
{
private List<IObserver> observers = new List<IObserver>();
private string message;
public void Attach(IObserver observer)
{
observers.Add(observer);
}
public void Detach(IObserver observer)
{
observers.Remove(observer);
}
public void Notify(string message)
{
this.message = message;
foreach (var observer in observers)
{
observer.Update(message);
}
}
}
4. MVVM 패턴
- MVVM 패턴(Model-View-ViewModel)은 GUI 응용 프로그램에서 UI와 비즈니스 로직을 분리하고, 뷰와 모델 사이의 의존성을 줄이는 패턴입니다.
- Model은 데이터 처리를, ViewModel은 데이터를 뷰에 노출하기 위한 로직을 담당하며, View는 실제 UI 표시를 담당합니다.
public class Model
{
public string GetData() => "Hello from Model";
}
public class ViewModel
{
private Model model = new Model();
public string Data => model.GetData();
}
public class View
{
private ViewModel viewModel = new ViewModel();
public void DisplayData()
{
Console.WriteLine(viewModel.Data);
}
}
디자인 패턴의 활용
- 디자인 패턴은 특정한 문제에 적용될 수 있으며, 개발자의 판단과 상황에 따라 선택적으로 사용되어야 합니다.
- 적절한 디자인 패턴의 선택과 적용은 소프트웨어의 품질과 유지보수성에 큰 영향을 미칩니다.
이번 포스팅에서는 C#에서의 주요한 디자인 패턴의 개념과 활용을 살펴보았습니다.
다음 글에서는 C#에서 유용하게 사용되는 라이브러리에 대해 알아보겠습니다.
감사합니다!
728x90
'[C#] > 프로그래밍 기초' 카테고리의 다른 글
[C#] 프로그래밍 기초 : 문자열(String) (22) | 2023.07.13 |
---|---|
[C#] 프로그래밍 기초 : 유용한 라이브러리 (15) | 2023.06.28 |
[C#] 프로그래밍 기초 : 파일 입출력 (16) | 2023.06.27 |
[C#] 프로그래밍 기초 : 예외처리 (15) | 2023.06.27 |
[C#] 프로그래밍 기초 : 인터페이스와 추상 클래스 (25) | 2023.06.26 |