본문 바로가기

디자인패턴

(3)
[디자인패턴] 스테이트 패턴 (State Pattern) 스테이트 패턴 (State Pattern) 이란 현재의 다양한 상태에 따라 동일한 입력이 들어와도 다른 결과를 낸다. 이때, 현재 시스템이 상태 변화에 독립적이도록 "상태"를 캡슐화하며 구체적 "상태"에서 행위를 수행하도록 위임하는 패턴이다. GoF 디자인 패턴 분류에 따르면, 클래스/객체 사이의 책임을 분배하여 결합도를 최소화하는 행위 패턴 (Behavior Pattern) 이다. UML 은 아래와 같이 구성이 된다. Context 클래스에서 자신의 현재 상태에 따라 로직을 구현하게 될 경우, 복잡한 조건문과 분기문들로 이해하기 어려운 코드가 작성될 것이다. 따라서, 새로운 상태가 추가될 때 알맞은 위치에 알맞은 코드를 작성하기 어려울 것이다. 모니터의 전원 버튼을 켜고/끄는 상태를 State Patt..
[디자인패턴] 데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴 (Decorator Pattern) 이란 기본 기능 외에도 여러가지 추가 기능들이 있을 때, 다양한 조합을 동적으로 구현할 수 있는 패턴이다. GoF 디자인 패턴 분류에 따르면, 클래스/객체를 조합하여 더 큰 구조를 만드는 구조 패턴 (Structural Pattern) 의 한 종류로 분류가 된다. UML 은 아래와 같이 구성이 된다. 단순 상속을 하는 방법도 사용이 될 수 있겠지만, 그럴 경우 여러가지 조합을 가진 클래스를 구성 할때에 가지수가 굉장히 많아지게 되는 문제가 생긴다. 의자를 Decorator Pattern을 통해 만드는 예제로 데코레이터 패턴을 이해해보려고 한다. 아무 특색이 없는 기본 기능만을 가진 의자 OrdinaryChiar 클래스는 Component 에 해당하는 C..
SOLID 원칙 객체지향 프로그래밍에서 유지보수와 확장이 쉬운 프로그램을 만들고자 할때 SOLID라는 5가지 기본 원칙을 활용할 수 있다. 기존 소스코드들을 리펙터링할 때에도 적용할 수 있는 규칙이 될 것이다. SRP : Solid Responsibility Principle OCP : Open Closed Principle LSP : Liskov Substitution Principle ISP : Interface Segregation Principle DIP : Dependendy Inversion Principle SRP 하나의 클래스는 단 하나의 책임만을 가져야 한다. ! 하나의 클래스의 여러개의 책임이 주어진다면? 프로그램의 요건이 추가 되거나 변경될 때, 클래스도 변경되어야하는 경우가 많아지게 되며 결합도가 ..