디자인 패턴 (2)

Jeong Gyejin·2023년 3월 17일
0

JAVA

목록 보기
16/18

옵저버 패턴

주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드를 통해 옵저버들에게 변화를 알려주는 패턴입니다.
옵저버 패턴은 주체와 객체를 따로 두지 않고 변경되는 객체를 기반으로 구축합니다.

사용하는 이유

다른 객체의 상태가 변경될 때마다 어떤 이벤트를 실행시키고 싶을 때 주로 이용합니다.

장점

  • 변경 사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축할 수 있습니다. 이는 객체 사이의 상호의존성을 최소화 할 수 있습니다.
  • 개방 폐쇄 원칙을 지킬 수 있습니다.

단점

  • 옵저버들에게 알림이 가는 순서를 보장할 수 없으며, 옵저버와 주체의 관계가 잘 정의되지 않을 경우에 원하지 않는 동작이 발생할 수 있습니다.

프록시 패턴

  • 대상 객체에 접근하기 이전에 그 접근에 대한 흐름을 가로채 대상 객체의 앞단에 인터페이스 역할을 하는 디자인패턴을이야기 합니다.
  • Nginx라는 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리가능한 웹서버를 이용해서 node.js 앞단의 프록시 서버로 주요 활용하며 Buffered Overflow 취약점을 예방하기 좋으며, 이를 통해 익명 사용자의 직접적인 서버 접근을 차단하며, 간접적으로 한 단계를 거침으로 보안성을 향상시킬 수 있습니다.

이터레이터 패턴

이터레이터를 사용하여 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 디자인 패턴을 이야기합니다.

장점

  • 캡슐화가 잘되어 있습니다.
  • 이터페이터 패턴을 이용하면 내부적인 구현 방법을 외부로 노출시키지 않으면서도 집합체에 있는 모든 항목에 일일이 접근할 수 있습니다. 또한, 각 항목에 일일이 접근할 수 있게 해주는 기능을 집합체가 아닌 반복자 객체에서 책임지게 됩니다.

단점

  • 간단한 컬렉션인 경우와 컬렉션에서 특정 위치의 요소에 바로 접근해야 할 때, 이터레이터를 사용하는 것은 비효율적입니다.
profile
항상 더 나은 개발자가 되기 위해서 끊임없이 공부하고 학습하면서 성장하는 사람이 되겠습니다.

0개의 댓글