Programming/DesignPattern
-
[Design Pattern] Observer PatternProgramming/DesignPattern 2020. 12. 26. 17:19
Observer Pattern 옵저버 패턴은 데이터의 변경이 발생되었을 때, 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용하다. 예를 들어, 새로운 파일이 추가되거나 기존 파일이 삭제되었을 때 탐색기는 이를 즉시 표시할 수 있다. 탐색기를 복수 개 실행하는 상황이나 하나의 탐색기에서 파일 시스템을 변경했을 때는 다른 탐색기에게 즉각적으로 이 변경을 통보해야 한다. 다른 예로는 차량의 연료가 소진될 때까지 주행가능 거리를 출력하는 클래스, 연료량이 부족하면 경고 메세지를 보내는 클래스, 연료량이 부족하면 자동으로 근처 주유소를 표시하는 클래스 등에 연료량의 변화를 통보하는 경우가 있다. 이런 경우 연료량 클래스는 연료량에 관심을 가지는 클래스에 직접 의존하지 않는 방식으로 설..
-
[Design Pattern] Command PatternProgramming/DesignPattern 2020. 12. 17. 18:02
커맨드 패턴(Command Pattern) 커먼드 패턴은 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에, 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할 때 유용하다. 커맨드 패턴은 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자 클래스와 실제 기능을 실행하는 수신자 클래스 사이의 의존성을 제거한다. 따라서 실행될 기능의 변경에도 호출자 클래스를 수정 없이 그대로 사용할 수 있도록 해준다. Command : 실행될 기능에 대한 인터페이스. 실행될 기능은 execute 메서드로 선언함. ConcreteCommand: 실제로 실행되는 기능을 구현. 즉, Command라는 인터페이스를 구현함. LampOnCommand , AlarmOnCommand Invoker: ..
-
[Design Pattern] State PatternProgramming/DesignPattern 2020. 12. 15. 20:15
State Pattern (스테이트 패턴) - UML 상태 머신 이해하기 - 상태를 캡슐화로 처리하는 방법 이해하기 - 스테이트 패턴을 통한 상태 변화 처리 방법 이해하기 - 새로운 상태를 추가할 수 있는 처리 방법 이해하기 상태(State)란? 객체가 시스템에 존재하는 동안, 즉 객체의 라이프 타임 동안 객체가 가질 수 있는 어떤 조건이나 상황을 표현한다. 예를 들면, 객체가 어떤 상태에 있는 동안 어떤 액티비티 등을 수행하거나 특정 이벤트가 발생하기를 기다리는 것이다. 형광등 예시 State Pattern을 사용하지 않고 형광등 클래스를 만든다고 할 때, 형광등의 상태(ON/OFF/SLEEP)에 따라 조건문을 걸어서 코딩을 해야한다. 이러한 방식은 작업을 수행할 때의 상태에 따라 상태 하나하나가 어떤..
-
[Design Pattern] Singleton PatternProgramming/DesignPattern 2020. 12. 14. 20:07
싱글턴 패턴의 이해 멀티 쓰레드 환경에서 싱글턴 패턴 싱글턴 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하고 어디에서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. *Singleton: 하나의 인스턴스만을 생성하는 책임이 있으머, getInstance() 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업 수행한다. public class Printer { private static Printer printer = null; public static Printer getPrinter() { if (printer == null) printer = new Printer(); return printer; } } 위 코드를 보면, printer 변수와 getPrinter() 메서드..
-
[Design Pattern] Strategy PatternProgramming/DesignPattern 2020. 12. 10. 16:40
Strategy Pattern (스트래티지 패턴) 알고리즘 변화를 캡슐화로 처리 스트래티지 패턴은 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 여기에서 전략이란 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등으로 이해할 수 있다. 프로그램에서 전략을 실행할 때는 쉽게 전략을 바꿔야할 필요가 있는 경우가 많이 발생한다. 특히 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을때 스트래티지 패턴은 매우 유용하다. 같은 문제를 해결하는 여러 알고리즘이 클래스 별로 캡슐화되어 있고, 이들이 필요할 때 교체할 수 있도록함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴이다. 클라이언트가 전략을..