Singleton pattern (생성)
=> 단하나의 객체 인스턴스만 존재
=> 스태틱 함수로 전역으로 객체 접근
Factory pattern (생성)
=> fetching하고 map 함수로 동적으로 생성할때 사용한다.
하나의 인터페이스로 여러가지 오브젝트를 생성한다 (동적환경에 최적화)
<sample>
1. 신발 클래스를 만든다.
2. 신발을 상속받는 나이키, 퓨마 등의 클래스를 만든다.
3. 신발공장 클래스의 변수로 나이키, 퓨마 클래스를 담아줌 (위임받음)
4. 신발공장의 create 매소드로 매개변수를 받아서 생성함
(이때 매개변수 체크 필요, 조건로직)
5. map 함수를 이용해서 여러 아이템들을 factory.create 가능하다.
Observer pattern (행동)
=> 한 객체의 상태가 바뀌면 다른 구독 객체들에게 상태와 변경을 알려준다.
여기서는 구독이라는 개념을 사용하고, 폴링 개념보다 효율적이다.
Facade Pattern (구조)
=> 간략화된 인터페이스로 직접적인 접근을 제약한다.
=> 다수의 서브클래스나 인터페이스 등을 한 클래스 내에서 관리할 수 있다.
사용자가 메뉴를 주문할때 주문에 관한 처리과정을 알 필요가 없다.
키친클래스 - 음식서비스 클래스 - 레스토랑퍼사드 클래스 (클라이언트와 인터페이스)
Command Pattern (행동)
=> 명령을 캡슐화해서 처리한다.
구성: 명령 Command / 수신자 Receiver / 발동자 Invoker / 클라이언트 Client
클라이언트(은행창구): 명령 생성
수신자(계좌): 명령이 전해졌을때 기능을 수행하고 반영한다.
발동자(은행시스템): 실행업무를 전달 받을 시 직접 Command 를 호출하고 도와준다.
명령(입출금, 이체): 미리 약속된 인터페이스를 구현해서 Invoker 에서 받은 명령을 Receiver에 전달한다.
(전달을 어떤방법으로 할지의 비즈니스 로직 담당)
1. command 생성
2. receiver 생성
3. invoker 인스턴스 & receiver 등록
4. command 등록
5. command 지시
Proxy Pattern (구조)
=> Proxy 를 통해 대신 접근한다. (실제객체와 클라이언트 사이에 존재)
클라이언트가 특정 객체에 접근해야하는데 비즈니스 로직상 추가적인 검사가 필요할 경우 (ex.접근권한)
원격객체에 데이터를 요청할때 proxy 객체에 caching / logging 로직을 추가한다.
체크 카드와 같은 예시가 프록시라고 할 수 있다.
구성: Client, Subject 인터페이스, Proxy(실제객체의 인스턴스, 핸들러), Real Subject -Subject의 구현체
Adapter Pattern (구조)
=> 서로 호환성 없는 인터페이스/클래스 들을 연결시켜야 할 경우 사용, 레거시 시스템 확장할때 사용
구성: 클라이언트, 인터페이스, 서비스/외부요소, 어댑터
Reference:
https://www.youtube.com/watch?v=RNE1zfECaac&list=PL3xNAKVIm80JldJ6IZBx5eQxck5JA6VuV&index=4&t=82s
'CS' 카테고리의 다른 글
React, Vue, Angular 의 차이 (0) | 2023.04.04 |
---|---|
SEO 란? (0) | 2023.03.29 |
SSR vs CSR vs SSG (페이지 렌더링 방식) (1) | 2023.03.29 |
NVL NVL2 ISNULL NULLIF COALESCE 비교 (1) | 2023.03.14 |