본문 바로가기

Personal-Study55

[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.
[TS Design Patterns] 구조 패턴 - 퍼사드 Facade - 라이브러리/프레임워크/다른 클래스들의 복잡한 집합에 대한 단순화된 인터페이스 제공 - 퍼사드: 움직이는 부분이 많이 포함된 복잡한 하위 시스템에 대한 간단한 인터페이스를 제공하는 클래스 - 복잡한 하위 시스템에 대한 제한적이지만 간단한 인터페이스가 필요할 때 사용 - 퍼사드는 기존 객체들을 위한 새 인터페이스를 정의, 어댑터는 기존의 인터페이스를 사용할 수 있게 만듦 - 앱의 전반적인 복잡성을 줄이는 동시에 원치 않는 의존성들을 한 곳으로 옮기는 것들 도움 - 예시 /** * The Facade class provides a simple interface to the complex logic of one or * several subsystems. The Facade delegates t.. 2023. 10. 28.
[TS Design Patterns] 구조 패턴 - 데코레이터 Decorator (Wrapper) - 객체들을 새로운 행동들을 포함한 특수 래퍼 객체들 내에 넣어서 위 행동들을 해당 객체들에 연결시킴 - 상속 대신 집합 관계 또는 합성을 사용함 - 래퍼는 일부 대상 객체와 연결할 수 있는 객체임 - 래핑된 객체와 같은 인터페이스 구현 - 민감한 데이터를 해당 데이터를 실제 사용하는 코드와 별도로 압축하고 암호화할 수 있음 - 객체들을 사용하는 코드를 훼손하지 않으면서 런타임에 추가 행동들을 객체들에 할당할 수 있을 때 사용 - final 키워드가 있어서 상속을 이용한 클래스 확장이 되지 않을 때 사용 가능 - 어댑터는 기존 객체의 인터페이스 변경, 데코레이터는 객체를 해당 객체의 인터페이스를 변경하지 않고 향상, 재귀적 합성 지원 - 어댑터는 다른 인터페이스, 프록.. 2023. 10. 28.
반응형