본문 바로가기

Design Pattern18

[Design Pattern] 템플릿 메소드 패턴(Template Method Pattern)에 대해 알아보자 Definition 템플릿 메소드 패턴(Template Method Pattern)은 알고리즘의 골격을 정의한다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있다. Behavioral Patterns Situation - 클라이언트가 알고리즘의 특정 단계만 확장하고 전체 알고리즘이나 해당 구조는 확장하지 않도록 할때 - 약간의 차이가 있지만 거의 동일한 알고리즘을 포함하는 여러 클래스들이 있는 경우 - 동일한 기능은 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현 Structure Pros - 클라이언트가 대규모 알고리즘의 특정 부분만 재정의하도록 하여.. 2022. 7. 15.
[Design Pattern] 퍼사드 패턴(Facade Pattern)에 대해 알아보자 Definition 퍼사드 패턴(Facade Pattern)은 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어 줍니다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있습니다. Situation - 어떤 서브시스템에 속한 일련의 복잡한 클래스를 단순하게 바꿔서 통합한 클래스를 만들어야 한다. - 클라이언트와 서브시스템이 서로 긴밀하게 연결되지 않아야 한다. - 복잡한 하위 시스템에 대한 제한적이지만 간단한 인터페이스가 필요한 경우 (Facade는 대부분의 클라이언트 요구 사항에 맞는 하위 시스템의 가장 많이 사용되는 기능에 대한 바로 가기를 제공) - Subsystem을 레이어로 구성하려는 경우 (Subsystem의 각 레벨에 대한 진입점을 정의) Structure .. 2022. 7. 14.
[Design Pattern] 어댑터 패턴(Adapter Pattern)에 대해 알아보자 Definition 어댑터 패턴(Adapter Pattern)은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와준다. Wrapper라고도 알려짐 Structural Patterns Situation - 사용하려는 클래스가 인터페이스 요구사항을 충족하지 않을 때 (e.g. XML -> JSON) - 기존 클래스를 사용하고 싶지만 인터페이스가 나머지 코드와 호환되지 않을 때 - 상위 클래스에 추가할 수 없는 몇가지 공통 기능이 없는 여러 기존 하위 클래스들을 재사용하려는 경우 Structure Pros - Single Responsibility Principle. 프로그램의 기본 비즈니스 로직에서 인터페.. 2022. 7. 12.
[Design Pattern] 커맨드 패턴(Command Pattern)에 대해 알아보자 Definition 커맨드 패턴(Command Pattern)을 사용하면 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 이러면 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있다. Situation - Request는 변형 시간 또는 변형 주문으로 지정, 대기 및 실행해야 한다. - Request들의 히스토리가 필요할 때 - 호출자는 호출을 처리하는 객체에서 분리되어야 한다. - 이를 통해 대기열 및 콜백과 같은 기존의 객체 기반 관계에서 요청을 처리할 수 있다. - 스레드 큐에서 커맨드를 하나씩 제거하면서 커맨드의 execute() 메소드를 호출한다. 메소드 실행이 끝나면 다시 큐에서 새로운 커맨드 객체를 가져간다. - 리모컨의 각 슬롯.. 2022. 7. 4.
300x250