본문 바로가기

ts23

[TS Design Patterns] 행동 패턴 - 옵저버 Observer (Event-Subscriber, Listener) - 여러 객체에 자신이 관찰중인 객체에 발생하는 모든 이벤트에 대해 알리는 구독 메커니즘 정의할 수 있도록 함 - 일부 객체들이 다른 객체들에 자신의 상태 변경에 대해 알릴 수 있음 - 구독자 인터페이스를 구현하는 모든 객체에 대한 이벤트들을 구독 및 구독 취소하는 방법 제공 - 예시 /** * The Subject interface declares a set of methods for managing subscribers. */ interface Subject { // Attach an observer to the subject. attach(observer: Observer): void; // Detach an observer fr.. 2023. 11. 12.
[TS Design Patterns] 행동 패턴 - 메멘토 Memento (Snapshot) - 객체의 구현 세부 사항을 공개하지 않으면서 해당 객체의 이전 상태를 저장하고 복원할 수 있게 해줌 - 메멘토는 상태 스냅샷들의 생성을 해당 상태의 실제 소유자인 originator 객체에 위임함 -> 다른 객체들이 '외부'에서 상태를 복사하려 시도하는 대신, 자신의 상태에 대해 완전한 접근 권한을 갖는 클래스가 자체적으로 스냅샷 생성 가능 - 메멘토라는 특수 객체에 객체 상태의 복사본을 저장하도록 제안 - 메멘토를 생성한 객체를 제외한 다른 어떤 객체도 해당 메멘토에 접근할 수 없음 - originator는 메멘토에 대한 전체 접근 권한이 있지만, caretaker는 메타 데이터만 접근 가능 - caretaker에 메멘토 저장 가능, 제한된 인터페이스를 통해서만 메멘.. 2023. 11. 7.
[TS Design Patterns] 행동 패턴 - 반복자 Iterator - 컬렉션 요소들의 기본 표현(리스트, 스택, 트리 등)을 노출하지 않고 하나씩 순회할 수 있도록 함 - 컬렉션의 순회 동작을 반복자라는 별도의 객체로 추출 - 컬렉션이 내부에 복잡한 데이터 구조가 있지만 구조의 복잡성을 보안이나 편의상의 이유로 클라이언트들로부터 숨기고 싶을 때 사용 - 앱 전체에서 순회 코드의 중복을 줄이기 - 코드가 다른 데이터 구조들을 순회할 수 있기 원할 때, 또는 이러한 구조들의 유형을 미리 알 수 없을 때 사용 - 복잡한 데이터 구조의 내부 세부 정보를 노출하지 않고 해당 구조를 차례대로 순회할 수 있도록 함 - 예시 /** * Iterator Design Pattern * * Intent: Lets you traverse elements of a collec.. 2023. 11. 5.
[TS Design Patterns] 행동 패턴 - 커맨드 Command (Action, Transaction) - 요청을 요청에 대한 모든 정보가 포함된 독립 실행형 객체로 변환 - 다양한 요청들이 있는 메서드들을 인수화할 수 있고, 요청의 실행을 지연 또는 대기열에 넣을 수 있음, 또 실행 취소할 수 있는 작업 지원 - 올바른 소프트웨어 디자인은 종종 관심사 분리의 원칙을 기반으로 함 - GUI 객체들이 비즈니스 로직에게 직접 요청을 보내지 않고 모든 요청 세부 정보들을 요청을 작동시키는 단일 메서드를 가진 별도의 커맨드 클래스로 추출하라고 제안 - 커맨드 객체들은 다양한 GUI 객체와 비즈니스 논리 객체들 간의 링크 역할을 함 - GUI는 커맨드를 작동시킬 뿐 다른 어떤 것도 알 필요 없음 커맨드가 모든 세부 사항들을 처리함 - 작업들로 객체를 매개변수화 .. 2023. 11. 5.
반응형