일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 데이터구조
- 데이터과학
- 자바스크립트
- 프로그래밍
- springboot
- 머신러닝
- 디자인패턴
- Yes
- 알고리즘
- 데이터베이스
- 컴퓨터과학
- 자료구조
- 웹개발
- 빅데이터
- I'm Sorry
- 소프트웨어
- 컴퓨터공학
- 인공지능
- 소프트웨어공학
- 버전관리
- 보안
- 딥러닝
- 클라우드컴퓨팅
- 데이터분석
- 사이버보안
- 프로그래밍언어
- 네트워크
- 컴퓨터비전
- 네트워크보안
- 파이썬
- Today
- Total
목록facade패턴 (4)
스택큐힙리스트
왜 둘을 헷갈릴까?두 패턴 모두 ‘겉’만 바꿔서 클라이언트를 편하게 해 준다는 공통점이 있다. 하지만 목표가 다르다.Adapter : 기존 클래스 한두 개의 인터페이스만 변환해 호환성을 맞춘다. 스마트폰 C-타입 젠더처럼 “맞지 않는 잭”을 바꿔 끼우는 느낌.Facade : 여러 서브시스템을 하나의 단순한 인터페이스로 감싼다. 건물 정면(façade)만 보이게 해서 내부 배선을 숨기는 전략.핵심 차이, 한눈에 정리의도Adapter : “인터페이스 호환 안 되는데?” → 변환기 추가.Facade : “인터페이스가 너무 많아 복잡해!” → 정면 하나로 통합.스코프Adapter는 보통 단일 객체를 래핑한다.Facade는 여러 객체 혹은 모듈을 한데 묶는다.영향 범위Adapter 뒤에는 클래스 한두 개만 숨어 ..
내용‘Facade(퍼사드)’는 원래 프랑스어 façade에서 온 건축 용어로, 건물의 정면·외관을 가리킵니다. 즉 사람들이 가장 먼저 마주하는 단순하고 깔끔한 “얼굴”이죠.GoF가 이 단어를 차용해 Facade 패턴을 만들었습니다. 복잡한 서브시스템을 그대로 드러내지 않고, 정면 역할의 클래스 하나만 노출해 클라이언트가 내부 구조를 몰라도 되게 하자는 발상입니다. 실제 패턴 정의도 “복잡한 하위 인터페이스를 하나로 통합해 단순한 API를 제공”이라고 설명하죠.국내 인기 개발 블로그들 역시 “Facade는 ‘서비스 센터 창구’ 같은 것”이라고 비유합니다. 고객(클라이언트)은 접수창구만 통하면 되고, 창구 뒤에서는 재고, 결제, 배송 같은 세부 프로세스가 조용히 굴러갑니다. 이렇게 외부에는 단일 진입점만 보..
왜 또 Facade인가?서비스 레이어에 Repository가 열 댓 개씩 붙고, 컨트롤러가 여러 서비스·유틸을 직접 호출하기 시작하면 의존성 지옥이 열린다. Facade 패턴은 이런 상황을 ‘CS 상담원’처럼 중간에 세워 단순한 진입점 하나로 묶어 결합도를 확 줄인다.1️⃣ Facade 패턴, 핵심 개념정의 : 서브시스템의 여러 인터페이스를 하나로 통합해, 고수준 인터페이스만 노출하는 구조 패턴.효과 : 클라이언트는 내부 구조를 몰라도 되고, 변경은 Facade 뒤에서만 일어나므로 유지보수 위험이 급감한다.2️⃣ 언제 쓰면 딱 좋을까?서브 시스템·Repository가 과다해 테스트, 모킹 비용이 폭증할 때컨트롤러가 순환 참조를 유발할 만큼 많은 서비스를 부르는 상황레거시·외부 라이브러리 API를 숨겨 계..
GoF 구조 패턴(Structural Patterns) 중 Adapter와 Facade는 ‘낡은 인터페이스’와 ‘복잡한 서브시스템’을 한 번에 다루는 만능 열쇠다. 1️⃣ 왜 구조 패턴이 필요한가?Adapter 패턴은 ‘호환되지 않는 인터페이스’를 일치시켜 기존 코드를 재사용하게 해 준다. 특히 프론트엔드에서 백엔드 응답 형태가 제각각일 때 효과가 크다.Facade 패턴은 복잡한 하위 시스템을 단일 진입점으로 숨겨, 클라이언트 코드(컨트롤러·서비스·컴포넌트)의 결합도를 낮춘다.2️⃣ React에서 Adapter로 API 데이터 ‘갈아입히기’// src/adapters/userAdapter.tsexport interface UserDTO { id: string; name: string; avatarU..