✅ 1. 계층화 패턴 (Layered Pattern)
설명
- 기능을 계층별로 나눠서 각 계층이 자신의 역할만 담당하도록 구조화 시킨 패턴
쉽게 말하면
- 학생 → 담임 선생님 → 교무실 → 행정실 순서로 일처리가 올라가고, 답도 역순으로 내려온다.
구조
- 프레젠테이션 계층: 사용자와 직접 소통하는 부분 (예: 화면, 버튼)
- 비즈니스 로직 계층: 규칙을 처리하는 곳 (예: 성적 계산)
- 데이터 접근 계층: 데이터 저장/불러오는 곳 (예: 데이터베이스)
예제: 은행 앱
- 사용자 인터페이스(UI): 계좌 조회 화면
- 비즈니스 로직: 이체 가능 여부, 수수료 계산
- 데이터 계층: 사용자 계좌 정보, 거래 내역 DB
✅ 2. 클라이언트-서버 패턴 (Client-Server Pattern)
- 설명: 클라이언트가 요청하고, 서버가 응답하는 구조
- 예제: 웹 브라우저와 웹사이트
- 크롬(클라이언트)이 네이버에 접속하면, 서버가 홈페이지 HTML을 응답
✅ 3. 파이프-필터 패턴 (Pipe-Filter Pattern)
설명
- 데이터를 단계별로 처리하는 구조 (필터들 사이에 파이프 연결)
쉽게 말해
- 물이 필터를 거치면서 점점 깨끗해지는 것처럼, 데이터를 단계별로 처리한다.
구조
- 필터(Filter): 데이터를 가공하는 작업 단위
- 파이프(Pipe): 데이터를 다음 필터로 전달
예제: 음악 편집 소프트웨어
- 잡음 제거 → 볼륨 조절 → 효과 추가 → 파일 저장
✅ 4. 브로커 패턴 (Broker Pattern)
설명
- 클라이언트와 서버 사이에 중개자(브로커)가 있음
🔍 핵심 개념:
- 말그대로 브로커 역할. "중간에서 연결해주는 중개인" 역할을 하는 구조
- 클라이언트는 어떤 서비스를 원하고, 서버는 실제 일을 할 수 있는데, 서로 어디 있는지 몰라서 직접 연결할 수 없을 때, 브로커가 대신 연결해준다.
쉽게 말하면
- 배달의 민족 같은 중개 앱을 생각해보면,
- 고객(클라이언트)이 음식을 주문해
- 가게(서버)는 음식을 만들지
- 그런데 고객은 가게를 직접 찾거나 연결할 필요 없이,
배달앱(브로커)이 알아서 중간에서 연결해줌
- 보통 분산 시스템에서 많이 사용함.
🖧 왜 분산 시스템에 필요할까?
분산 시스템에서는 서버가 하나가 아니고 여러 개이다.
게다가 이 서버들은 다른 컴퓨터, 다른 지역에 흩어져 있을 수도 있다.
그런데 클라이언트가 매번 서버를 직접 찾거나 통신 방식까지 다 알아야 한다면? 너무 복잡하기 때문에 그래서!
브로커가 클라이언트와 서버 사이에서 이렇게 도와준다.
-
- 서버 등록: "나 이 기능 할 수 있어!"
- 클라이언트 요청: "이 기능 해줘!"
- 연결 중개: "오키ㅋ 요청을 저 서버로 보내줄게!"
✅ 5. MVC 패턴 (Model-View-Controller)
- 설명: 화면(View), 데이터(Model), 요청 처리(Controller)를 분리
- 예제: 쇼핑몰 웹사이트
- 상품 조회 → Controller가 요청 → Model에서 데이터 → View에 보여줌
✅ 6. 마스터-슬레이브 패턴 (Master-Slave Pattern)
- 설명: 마스터가 전체 작업을 분할하고, 여러 슬레이브에게 나눠주어 처리시킴.
슬레이브는 결과만 다시 마스터에게 보냄. - 예제: 데이터베이스 복제 시스템
- Master DB: 데이터 입력, 변경 수행
- Slave DB: 읽기 전용, 다수의 사용자 요청 처리에 활용
- 예를 들어, 네이버 검색엔진이 수많은 사용자의 검색 요청을 슬레이브 DB에서 빠르게 응답함.
✅ 7. 피어 투 피어 패턴 (Peer-to-Peer Pattern)
- 설명: 모든 컴퓨터가 동등한 위치에서 서로 데이터를 주고받음 (서버가 따로 없음)
- 예제: 토렌트 다운로드 시스템
- 누군가 파일을 가지고 있으면, 여러 사용자에게 동시에 전송 가능
- 각각이 서버이자 클라이언트 역할을 동시에 함
✅ 8. 이벤트 버스 패턴 (Event-Bus Pattern)
- 설명: 여러 컴포넌트가 이벤트를 주고받을 수 있도록 **중앙 통신 시스템(Event Bus)**을 둠
송신자는 수신자를 몰라도 됨 (느슨한 결합) - 예제: Android 앱의 이벤트 처리
- 버튼 클릭 → 이벤트 발생 → Event Bus가 리스너에게 전달
- 대표 라이브러리: EventBus, RxJava
🔍 핵심 개념: ‘어디선가 이벤트가 발생하면, 그걸 듣고 있던 부품들이 알아서 반응하는 구조’
💡 쉽게 말하면:
- 학교에서 **교내 방송(이벤트)**을 틀었더니,
- 어떤 반은 조용히 듣고,
- 어떤 반은 조용히 앉고,
- 어떤 반은 방송을 무시함 😅
즉, 방송을 모두가 듣고 있고,
필요한 애들만 필요한 반응을 하는 것.
앱 예시 : 카카오톡 메시지 수신 처리
- 메시지가 도착했다는 이벤트가 발생하면,
- 📱채팅창은 새 메시지를 화면에 보여주고
- 🔔알림 센터는 푸시 알림을 띄우고
- 📥저장 모듈은 메시지를 DB에 저장함
각각의 기능이 이벤트 버스를 통해 알림을 받아서 따로따로 처리하는 것이다.
✅ 9. 블랙보드 패턴 (Blackboard Pattern)
- 설명: **여러 컴포넌트(전문가)**들이 하나의 공통 공간(블랙보드)에 접근하여 문제를 해결함
- 예제: 각 컴포넌트는 블랙보드 상태를 보며 필요한 때에 동작함
- 음성 인식 시스템
- 음향 분석, 문맥 분석, 언어 처리 모듈이 각자 블랙보드에서 정보를 가져와 협업
- 또 다른 예: AI 진단 시스템
🔍 핵심 개념:
‘모든 지식을 칠판(블랙보드)에 쓰고, 여러 전문가들이 거기서 정보를 가져와서 각자 해석하고 업데이트하는 구조’
💡 쉽게 말하면:
수학 문제를 칠판에 써놓고,
- 한 학생은 문제를 읽고 숫자를 정리하고,
- 다른 학생은 공식에 대입하고,
- 또 다른 학생은 그래프를 그림
→ 결과를 다시 칠판에 써서 다음 사람이 이어받아 작업함
즉, 하나의 공간에 정보가 공유되고, 여러 모듈이 협력적으로 문제 해결을 해나가는 구조이다.
🧠 실제 예시:
음성 인식 시스템
- 🎤 마이크로 입력된 음성을 블랙보드에 올림
- 🔍 모듈1: 음성 → 단어 분리
- 🧠 모듈2: 단어 → 문장 해석
- 📄 모듈3: 문장 → 의미 분석
- 💬 최종 결과 출력
이런 시스템은 모듈끼리 직접 대화하지 않고, 블랙보드라는 공유 공간을 보고, 쓰고, 읽으면서 협력하는 방식이다.
✅ 10. 인터프리터 패턴 (Interpreter Pattern)
- 설명: 언어나 문법 규칙을 가진 코드를 해석하고 실행하는 구조
- 예제
- SQL 파서
- SELECT * FROM table WHERE age > 20; 이 문장을 해석하고 실행함
- 정규표현식 엔진
- 입력된 패턴을 해석해서 해당 문자열을 찾아줌
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 이론] 구조적(정적) 다이어그램 종류-클래스/패키지/컴포넌트 다이어그램 (3) | 2025.07.04 |
---|---|
[정보처리기사 실기 이론] UML 다이어그램 종류 쉽게 이해하기 (1) | 2025.07.03 |
[정보처리기사 실기 이론] 디자인 패턴 유형 | 구조패턴(Structural Pattern) 쉽게 이해하기 (2) | 2025.07.02 |
[정보처리기사 실기 이론] 디자인 패턴 유형 | 생성패턴(Creational Pattern) 쉽게 이해하기 (1) | 2025.07.02 |
[정보처리기사 실기 이론] 디자인 패턴 개념과 유형 및 종류 (0) | 2025.07.02 |