본문 바로가기

ts23

[TS Design Patterns] 구조 패턴 - 브리지 Bridge - 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층 구조 (추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 함 - 상속에서 객체 합성으로 전환 - 한 클래스 내에서 모든 상태와 행동들을 갖는 대신 새 계층 구조의 객체를 참조하도록 함 - 추상화 (인터페이스) - 일부 객체에 대한 상위 수준의 제어 레이어 - 제어 레이어는 실제 작업을 수행해서는 안되며 구현 레이어 (플랫폼)에 위임해야 함 - ex) 추상화 - GUI, 구현 - GUI 레이어가 사용자와 상호작용하여 그 결과로 호출하는 배경 운영 체제 코드 (API) - 구현 - 브리지 패턴은 클래스들을 두 개의 계층 구조로 분리하도록 제안함 - 어떤 기능의 여러 변형을 가진 모놀리식 클래스를 나누고 정돈할 .. 2023. 10. 23.
[TS Design Patterns] 구조 패턴 - 어댑터 Adapter (Wrapper) - 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 함 - 어댑터: 한 객체의 인터페이스를 다른 객체가 이해할 수 있도록 변환하는 특별한 객체 (두 객체 사이의 래퍼 역할), 하나의 객체에 대한 호출을 캐치하고 두 번째 객체가 인식할 수 있는 형식과 인터페이스로 변환 - 객체 어댑터: 객체 합성 원칙 사용, 어댑터는 한 객체의 인터페이스를 구현하고 다른 객체는 래핑함 - 클래스 어댑터: 상속 사용, 동시에 두 객체의 인터페이스 상속 (다중 상속 지원하는 C++ 같은 언어에서만 사용 가능) - 어댑터 클래스는 기존 클래스를 사용하고 싶지만 그 인터페이스가 나머지 코드와 호환되지 않을 때 사용 - 예시 /** * The Target defines the domain.. 2023. 10. 23.
[TS Design Patterns] 생성 패턴 - 싱글톤 Singleton - 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근 지점을 제공하는 생성 패턴 - 싱글톤 인스턴스를 가져오기 위한 공개된 정적 생성 메서드 선언 - 같은 종류의 객체가 하나만 존재하도록 하고 다른 코드의 해당 객체에 대한 단일 접근 지점 제공 - 앱 전체에서 공유 및 사용되는 단일 인스턴스 - 앱의 전역 상태를 관리하기 적합 - 인스턴스를 하나만 만들도록 강제하면 꽤 많은 메모리 공간 절약 가능 - 하지만 JS에서 안티패턴으로 간주됨 - Java, C++와 다르게 JS에서는 클래스를 작성하지 않더라도 쉽게 객체 만들 수 있음 - 테스트 코드 작성할 때도 까다로움 - React에서 전역 상태 관리를 위해 Singleton 객체를 만드는 것 대신 Redux나 Cont.. 2023. 10. 21.
[TS Design Patterns] 생성 패턴 - 프로토타입 Prototype (Clone) - 코드를 클래스에 의존시키지 않고, 기존 객체들을 복사할 수 있도록 하는 생성 패턴 - 객체를 외부에서부터 복사하는 것은 항상 가능하지 않음 (private 필드 존재 가능) - 객체를 복제하려면 해당 객체의 클래스를 알아야 하므로 의존적임 - 프로토타입 패턴은 실제로 복제되는 객체들에 복제 프로세스를 위임함 - 프로토타입이란 복제를 지원하는 객체임 - 미리 만들어진 프로토타입은 서브 클래스의 대안이 될 수 있음 - 코드를 기하학적 객체들의 클래스들에 결합하지 않고도 해당 객체들의 정확한 복사본 생성 가능 - 동일 타입의 여러 객체들이 프로퍼티를 공유함 - JS 객체의 기본 속성이고 Prototype 체인 활용 가능 - 생성자의 prototype 프로퍼티 혹은 생성된 인.. 2023. 10. 21.
반응형