Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- spring
- 배포
- 김영한
- 오블완
- Eclipse
- jQuery
- HTML
- error
- 깃허브
- 자바
- CSS
- myBatis
- bootstrap
- 코딩
- SQL
- Spring Security
- vscode
- github
- 스파르타코딩클럽
- AJAX
- 티스토리챌린지
- restapi
- SQLD
- Firebase
- JavaScript
- ChatGPT
- 기업설명회
- 이클립스
- java
- 웹개발
Archives
- Today
- Total
푸들푸들
[CS] 디자인 패턴 본문
1. 싱글톤 패턴
- 1 class, 1 instance
- 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용
- 인스턴스 생성 비용 ↓ but, 의존성 ↑
- TDD(Test Driven Development) 어려움 - 독립적이지 X
- -> 의존성 주입(DI, Dependency Injection) ≒ 디커플링
- 메인 모듈과 하위 모듈 중간에 의존성 주입자 삽입 - 메인 모듈이 간접적으로 의존성 주입 -> 의존성 ↓
2. 팩토리 패턴
- 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴
- 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴
3. 전략 패턴
- strategy pattern = 정책 패턴(policy pattern)
- 객체의 행위를 바꿀 때, 직접 수정x -> 캡슐화한 알고리즘을 컨텍스트 안에서 수정
- passport: Node.js 인증 모듈을 구현할 때 쓰는 미들웨어 라이브러리, 여러가지 전략을 기반으로 인증
4. 옵저버 패턴
- 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴 -> 주체 = 관찰자, 옵저버 = 추가 변화 사항이 생기는 객체
- 옵저버 패턴을 활용한 서비스: 트위터 - 어떤 사람인 주체를 '팔로우' 했다면 주체가 포스팅을 하면 '팔로워'에게 알람이 감
- 주로 이벤트 기반 시스템에 사용
- MVC 패턴에도 사용됨
5. 프록시 패턴
- 대상 객체에접근하기 전 그 접근에 대한 흐름을 가로채 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인 패턴
- 객체의 속성, 변환 등을 보완
- 보안, 데이터 검증, 캐싱, 로깅에 사용
- 프록시 서버: 서버와 클라이언트 사이에서 클라이언트가 자신을 통해다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템, 응용 프로그램
- 프록시 서버로 쓰는 CloudFlare
- 웹 서버 앞단에 프록시 서버로 두어 DDOS 공격 방어, HTTPS 구축
- 서비스 배포 후 의심스러운 트래픽 판단해 CAPTCHA 등을 기반으로 일정 부분 막아줌
- 프록시 서버로 쓰는 CloudFlare
6. 이터레이터 패턴
- 이터레이터(iterator)를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴
- 이레이터 프로토콜: 이터러블한 객체들을 순회할 때 쓰이는 규칙
- 이터러블한 객체: 반복 가능한 객체로 배열을 일반화한 객체
7. 노출모듈 패턴
- revealing module pattern, 즉시 실행 함수를 통해 접근 제어자(private, public)를 만드는 패턴
8. MVC 패턴
- Model, View, Controller로 이루어진 디자인 패턴
- 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중 가능
- 재사용성, 확장성 용이
- 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해짐
- MVC 패턴을 이용한 프레임워크: Spring
- 모델: 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등
- 뷰: 사용자 인터페이스 요소, 모델을 기반으로 사용자가 볼 수 있는 화면
- 컨트롤러: 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할, 메인 로직 담당, 모델과 뷰 생명주기 관리
9. MVP 패턴
- Model, View, Presenter로 이루어진 디자인 패턴, MVC 패턴으로부터 파생됨
- 뷰, 프레젠터 = 1:1 -> MVC보다 더 강한 결합
10. MVVM 패턴
- Model, View, View Model로 이루어진 디자인 패턴
- 뷰 모델: 뷰를 더 추상화한 계층
- 커맨드(command, 여러 가지 요소에 대한 처리를 하나의 액션으로 처리)와 바인딩(binding, 화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시킴)을 가짐
- 뷰와 뷰모델 사이의 양방향 데이터 바인딩을 지원
- UI를 별도의 코드 수정 없이 재사용 가능, 단위 테스팅 하기 쉬움
- MVVM 패턴을 가진 프레임워크: View.js
'SELF-STUDY > CS 전공지식 노트' 카테고리의 다른 글
[CS] 프로그래밍 패러다임 (0) | 2025.05.23 |
---|