🔁 이터레이터 패턴
·
Computer Science/Design Pattern
이터레이터(iterator)를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴입니다.이를 통해 순회할 수 있는 여러 가지 자료형의 구조와는 상관없이 이터레이터라는 하나의 인터페이스로 순회가 가능합니다.💻 코드 예시1. 자바스크립트(JavaScript)에서의 이터레이터 패턴다른 자료 구조인 set과 map임에도 똑같은 for a of b라는 이터레이터 프로토콜을 통해 순회하는 것을 볼 수 있습니다.const mp=new Map()mp.set('a',1)mp.set('b',2)mp.set('c',3)const st=new Set()st.add(1)st.add(2)st.add(3)for (let a of mp)console.log(a)for(let a of st) console.log(a)/*['a',1][..
⛓️ 프록시 패턴과 프록시 서버
·
Computer Science/Design Pattern
대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인 패턴입니다.객체의 속성, 변환 등을 보안하며 보안, 데이터 검증, 캐싱, 로깅에 사용합니다. 이는 앞서 설명한 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용됩니다. 용어설명 :프록시 서버에서의 캐싱: 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말합니다.사용자가 자주 요청하는 데이터를 프록시 서버가 미리 복사해서 보관(캐싱)해둡니다. 덕분에 진짜 서버까지 가지 않고도 프록시 서버가 바로 데이터를 전달해 줄 수 있어 속도가 매우 빨라집니다.불필요하게 외부와 연결하지 ..
📡 옵저버 패턴 (Observer Pattern)
·
Computer Science/Design Pattern
주체(Subject)가 어떤 객체(Observer)의 상태 변화를 관찰하다가, 상태 변화가 생길 때마다 메서드 등을 통해 옵저버 목록에 있는 모든 옵저버(Observer)에게 변화를 자동으로 알려주는 디자인 패턴입니다. 주체와 객체를 따로 두지 않고, 상태가 변경되는 객체(주체)를 기반으로 구축하기도 합니다. 대표적인 예로 트위터(유튜브)의 구독 알림 기능이나 MVC(Model-View-Controller) 패턴 등이 있습니다.📁 비유: 유튜브 채널 구독 (주체와 구독자)옵저버 패턴은 유튜브 채널과 구독자 관계를 생각하면 가장 이해하기 쉽습니다.주체 (Subject): '얄팍한 코딩사전' 유튜브 채널 (Java 예제의 Topic 클래스)옵저버 (Observers): 채널을 구독한 구독자 A, B, C ..