본문 바로가기

전체 글

[Design Pattern] 4. State Pattern(상태 패턴) C# 객체가 처한 현재 상황에 따라 스스로 취할 행동을 변경하는 패턴으로 상태 패턴이라 합니다. 이 또한 행동 패턴(Behavioral Design Patterns)중 하나입니다. 장점 단일 책임 원칙을 만족하며 특정 상태에 사용되는 코드를 별도의 클래스로 분리할 수 있습니다. 개방/폐쇄 원칙을 만족하며 기존 코드를 변경하지 않고 새 클래스를 추가할 수 있습니다. 조건문을 줄여 코드가 단순해지고 가독성을 높일 수 있습니다. 단점 처리하는 상태가 별로 없거나 상태의 변화가 적은 경우에 적용하는 것은 과유불급입니다. 이번 패턴도 역시 C#으로 Console 프로젝트를 하나 생성해서 할 것입니다. 이해를 위한 것이니 간단하게 만들겠습니다. 목표는 영수증 출력 기계(Receipt Printer)에 결제를 하고 영수증.. 더보기
[Design Pattern] 3. Chain of Responsibility Pattern(책임 연쇄 패턴) C# 요청이 들어 왔을 때 수행하는 객체에 들어오면 각각의 요청에 대해서 특정한 객체가 담당하는 것이 아닌 객체를 사슬처럼 연결해서 요청을 수행하지 못하는 객체라면 다음 객체에 넘기는 식의 패턴을 말합니다. 수행하는 객체가 여럿이고 특정되지 않은 상황에서 사용하는 패턴입니다 이 또한 행동 패턴(Behavioral Design Patterns)중 하나입니다. 장점 단일 책임 원칙을 만족하며 작업을 호출하는 클래스들과 수행하는 클래스들과 분리할 수 있습니다. 수행하는 클래스들의 내부 구조를 알 필요 없습니다. 개방/폐쇄 원칙을 만족하며 기존 코드를 변경하지 않고 새 핸들러들을 도입할 수 있습니다. 단점 일부 요청들은 처리되지 않을 수 있습니다. C#으로 Console 프로젝트를 하나 생성해서 할 것입니다. 이번에.. 더보기
[Design Pattern] 2. Strategy Pattern(전략 패턴) C# 어떠한 알고리즘 혹은 로직 같은 그러한 행위들을 클래스로 만들어 필요한 상황에 동적으로 변환해서 사용할 수 있게 해주는 패턴입니다. 행동 패턴(Behavioral Design Patterns)중 하나이죠. 장점 런타임 중(실행 중)에 동적으로 사용되는 알고리즘을 변경할 수 있습니다. 알고리즘의 구현에 세부적인 내용을 분리 할 수 있습니다. 상속에서 구성으로 대체 할 수 있습니다. 개방/폐쇄 원칙을 만족하며 새로운 전략을 도입할 수 있습니다. 단점 사용되는 알고리즘의 수가 적으며 거의 변하지 않는다면 복잡해지는 패턴을 적용할 이유가 없습니다. 적절한 전략을 구현, 선택할 수 있도록 그의 차이점을 명확하게 알고있어야 합니다. 현대에 와서는 지원되는 기능이 많기 때문에 찾아보면 동일한 기능을 이미 지원하고 있.. 더보기
[Design Pattern] 1. 디자인 패턴이란 무엇인가 디자인 패턴은 소프트웨어 디자인 중 발생하는 문제에 적용하여 해결 할 수 있는 해결법입니다. history: 1990년대 GoF(Gang of Four)로 알려진 소프트웨어 엔지니어 그룹에 의해 처음 나왔으며 "Design Patterns: Elements of Reusable Object-Oriented Software"라는 책에 23가지의 패턴을 정리했습니다. 패턴이라고 불리듯이 그 기능을 그냥 가져다 쓰는 것이 아닌 자신의 코드에 패턴을 적용하는 것입니다. 디자인 패턴은 아래와 같이 세가지로 분류됩니다. 생성: 객체가 생성되는 상황에 작용 되는 패턴이며 적절한 방식으로 객체가 생성될 수 있게 도와는 패턴입니다. 구조: 개체의 구성 또는 개체에 기능 추가 등 더 큰 구조로 형성시킬때 사용되는 패턴입니.. 더보기