본문 바로가기

ts23

[TS Design Patterns] 행동 패턴 - 중재자 Mediator (Intermediary, Controller) - 객체 간의 혼란스러운 의존 관계를 줄일 수 있음 - 객체 간의 직접 통신을 제한하고 중재자 객체를 통해서만 협력하도록 함 - 서로 독립적으로 작동해야 하는 컴포넌트 간의 모든 직접 통신을 중단한 후, 대신 이러한 컴포넌트들은 호출들을 적절한 컴포넌트들로 리다이렉션하는 특수 중재자 객체를 호출하여 간접적으로 협력하도록 제안함 -> 단일 중재자 클래스에만 의존하게 됨 - ex) 모든 항공 통신은 비행기 관제탑을 통해 이루어짐 - 일부 클래스들이 다른 클래스들과 단단하게 결합하여 변경하기 어려울 때 사용 - 타 컴포넌트들에 너무 의존해서 다른 프로그램에서 컴포넌트를 재사용할 수 없을 때 사용 - 몇 가지 기본 행동을 다양한 콘텍스트들에서 재사.. 2023. 11. 4.
[TS Design Patterns] 행동 패턴 - 책임 연쇄 Chain of Responsibility (Chain of Command) - 일련의 핸들러들의 체인을 따라 요청을 전달할 수 있게 해줌 - 각 핸들러는 요청을 받으면 요청을 처리할지 아니면 체인의 다음 핸들러로 전달하지 결정함 - 특정 행돌들을 핸들러라는 독립 실행형 객체들도 변환함 - 핸들러가 요청을 체인 아래로 더 이상 전달하지 않고 추가 처리를 사실상 중지하는 결정을 내릴 수 있음 - 다양한 방식으로 다양한 종류의 요청들을 처리할 것으로 예상되지만, 정확한 요청 유형들과 순서들을 미리 알 수 없는 경우에 사용 - 특정 순서로 여러 핸들러를 실행해야 할 때 사용 - filter, event chain과 같은 객체 체인과 함께 작동할 때 유용 - 예시 /** * The Handler interfac.. 2023. 11. 1.
[TS Design Patterns] 행동 패턴 - 옵저버 Observer (Event-Subscriber, Listener) - Observable를 활용해 Subscriber에게 이벤트 발생을 알림 - 구독하는 주체: Observer 구독 가능한 객체: Observale - 이벤트 발생할 때 마다 Observable는 모든 Observer에게 이벤트를 전파함 - 비동기 호출 또는 이벤트 기반 데이터 처리할 때 매우 유용함 ex) 어떤 컴포넌트가 특정 데이터의 다운로드 완료 알림 받기를 원함, 사용자가 메시지 보드에 세로운 메시지를 게시했을 때 모든 멤버가 알림 받는 상황 등 - RxJS: Observer 패턴을 구현한 유명한 오픈소스 라이브러리 - ReactiveX: Observer, 이터레이터 패턴, 함수형 프로그래밍을 조합하여 이벤트의 순서를 이상적으로 .. 2023. 10. 30.
[TS Design Patterns] 구조 패턴 - 플라이웨이트 Flyweight (Cache) - 각 객체에 모든 데이터를 유지하는 대신 여러 객체 간에 상태의 공통 부분을 공유하여 사용할 수 있는 RAM에 더 많은 객체를 포함할 수 있도록 함 - 객체 내부에 Extrinsic (Unique, Mutable)의 저장을 중단하고, 대신 이 상태를 이 상태에 의존하는 특정 메서드들에 전달할 것을 제안함 즉, Intrinsic (Repeating, Immutable)만 저장함 - 공유한 상태 스토리지 - 공유한 상태는 패턴을 적용하기 전에 객체들을 집합시키는 컨테이너 객체로 이동됨 - 플라이웨이트와 불변성 - 플라이웨이트 팩토리 - 프로그램이 많은 수의 객체들을 지원해야 해서 사용할 수 있는 RAM을 거의 다 사용했을 때만 사용하기 - 프로그램들이 객체들의 메모리 소비.. 2023. 10. 30.
반응형