1-1. 디자인 패턴 [02] - 프록시 패턴과 프록시 서버, 이터레이터 패턴, 노출모듈 패턴

2025. 9. 15. 20:11·CS 스터디

1. 프록시 패턴과 프록시 서버 (Proxy Pattern and Proxy Server)

1) 프록시 패턴

프록시 패턴은 객체에 대한 접근을 가로채 필터링하거나 수정하는 등의 역할을 하는 디자인 패턴이다. 즉, 객체에 대한 접근을 제어하기 위해 대리인(Proxy) 객체를 두는 것이다.

 

- 접근 제어 : 특정 객체에 접근하기 전, 권한을 확인하거나 로깅을 남기는 등 추가적인 작업을 한다.

- 지연 초기화 : 객체를 실제로 사용하기 직전에 생성하여 메모리 사용량을 최적화한다. ex) 이미지 로딩

- 보안 : 데이터 검증, 캐싱 등에 사용하며 프록시 서버로도 활용된다.

 

 

2) 프록시 서버

프록시 서버는 서버와 클라이언트 사이에 위치하며, 클라이언트의 요청을 대신 처리하는 서버이다. 클라이언트는 프록시 서버에 요청을 보내고, 프록시 서버가 해당 요청을 목표 서버로 전달한다.

 

- Nginx : 주로 Node.js의 버퍼 오버플로우를 예방하기 위해 Node.js 서버 앞 프록시 서버로 활용된다. 익명 사용자의 직접적인 서버 접근을 차단하고, 실제 포트를 숨겨 보안을 강화할 수 있다.

- CloudFlare : 전 세계적으로 분산된 서버가 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스이다. 주로 DDOS 공격 방어나 HTTPS 구축, 의심스러운 트래픽 판단에 사용한다.

 

 

 

2. 이터레이터 패턴

이터레이터 패턴은 컬렉션 객체의 내부 구조를 노출하지 않으면서도 그 안에 있는 원소들을 순회하는 방법을 제공하는 디자인 패턴이다. 즉, 컬렉션의 순회 방법을 이터레이터라는 하나의 인터페이스로 표준화하고, 순회 로직을 컬렉션 객체와 분리한다.

 

 

1) 안드로이드에서의 이터레이터 패턴

안드로이드 코틀린에서는 이미 표준 라이브러리에 포함되어 있기 때문에 이터레이터 패턴을 직접 구현할 일이 거의 없다.

 

- for-each 루프 : 코틀린의 for 구문은 내부적으로 이터레이터 패턴을 사용한다.

- 표준 컬렉션 : List, Set, Map 등 모든 표준 컬렉션 클래스는 Iterable 인터페이스를 구현하고 있으며, iterator() 메서드를 제공한다.

 

 

 

3. 노출 모듈 패턴

즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴이다. 즉시 실행 함수를 사용하여 모든 코드를 감싸고, 이 함수 내에서 비공개 변수와 함수(private) 를 정의한 뒤, 최종적으로 반환하는 객체에 공개할 멤버(public)만 포함시키는 방식이다.

 

 

1) 안드로이드에서의 노출 모듈 패턴

노출 모듈 패턴은 자바스크립트의 언어적 특성을 활용한 패턴으로, 코틀린에서는 이 패턴을 직접적으로 사용하지 않는다. 하지만 비공개(private) 멤버를 캡슐화하고 일부만 외부로 노출하는 개념은 코틀린에서도 매우 중요하게 적용된다.

 

- LiveData, StateFlow : MutableLiveData(또는 MutableStateFlow)를 private으로 선언하고, LiveData (또는 StateFlow)로 외부에 노출하여 내부 데이터 변경을 막는 방식도 노출 모듈 패턴과 유사한 개념이다.

private val _uiState = MutableStateFlow(UiState.Loading)
val uiState = _uiState.asStateFlow()

 

 

 

'CS 스터디' 카테고리의 다른 글

2-1. 네트워크의 기초 [02]- 네트워크 분류, 네트워크 성능 분석 명령어, 네트워크 프로토콜 표준화  (0) 2025.09.26
2-1. 네트워크의 기초 [01]- 처리량과 지연 시간, 네트워크 토폴로지와 병목 현상  (0) 2025.09.26
1-2. 프로그래밍 패러다임 - 선언형과 함수형 프로그래밍, 객체지향 프로그래밍, 절차형 프로그래밍  (0) 2025.09.19
1-1. 디자인 패턴 [03] - MVC 패턴, MVP 패턴, MVVM 패턴  (1) 2025.09.15
1-1. 디자인 패턴 [01] - 싱글톤 패턴, 팩토리 패턴, 전략 패턴, 옵저버 패턴  (1) 2025.09.08
'CS 스터디' 카테고리의 다른 글
  • 2-1. 네트워크의 기초 [01]- 처리량과 지연 시간, 네트워크 토폴로지와 병목 현상
  • 1-2. 프로그래밍 패러다임 - 선언형과 함수형 프로그래밍, 객체지향 프로그래밍, 절차형 프로그래밍
  • 1-1. 디자인 패턴 [03] - MVC 패턴, MVP 패턴, MVVM 패턴
  • 1-1. 디자인 패턴 [01] - 싱글톤 패턴, 팩토리 패턴, 전략 패턴, 옵저버 패턴
leastzero
leastzero
  • leastzero
    빵이
    leastzero
  • 전체
    오늘
    어제
    • 모든 글 (31) N
      • CS 스터디 (25)
      • 활동 (2)
      • IT 기술 (4) N
  • hELLO· Designed By정상우.v4.10.4
leastzero
1-1. 디자인 패턴 [02] - 프록시 패턴과 프록시 서버, 이터레이터 패턴, 노출모듈 패턴
상단으로

티스토리툴바