옵저버(Observer) 패턴 - GoF 패턴 18
·
디자인 패턴/GoF 디자인 패턴
1. 옵저버(Observer) 패턴이란?Observer 패턴은 GoF 디자인 패턴 중 행위(Behavioral) 패턴에 속하는 방식으로,어떤 객체의 상태가 변경되었을 때그 객체를 관찰하고 있던 다른 객체들에게 자동으로 알림을 보내는 패턴입니다. 쉽게 말해,하나의 객체를 여러 객체가 구독하고 있다가그 객체의 상태가 바뀌면구독 중인 객체들에게 변경 사실을 자동으로 알려주는 구조라고 볼 수 있습니다. 예를 들어 뉴스 구독 서비스를 생각해보면,사용자들은 특정 뉴스 채널을 구독할 수 있고,뉴스 채널에 새로운 기사가 올라오면구독자들에게 자동으로 알림이 전달됩니다. 이때 뉴스 채널은 구독자 목록을 관리하고 있다가,새로운 뉴스가 발행되면등록된 구독자들에게 변경 내용을 알려줍니다. 또 다른 예로 C#의 FileSyste..
메멘토(Memento) 패턴 - GoF 패턴 17
·
디자인 패턴/GoF 디자인 패턴
1. 메멘토(Memento) 패턴이란?Memento 패턴은 GoF 디자인 패턴 중 행위(Behavioral) 패턴에 속하는 방식으로,객체의 내부 상태를 저장해두었다가나중에 필요할 때 이전 상태로 복원할 수 있도록 만드는 패턴입니다. 쉽게 말해,어떤 객체의 현재 상태를 스냅샷처럼 따로 저장해두고,나중에 문제가 생기거나 되돌릴 필요가 있을 때저장해둔 상태로 다시 되돌릴 수 있게 만드는 구조라고 볼 수 있습니다. 예를 들어 문서 편집기를 생각해보면,사용자가 글을 작성하다가 실수로 내용을 지웠을 때이전 상태로 되돌리고 싶을 수 있습니다. 이때 문서의 상태를 미리 저장해두었다면실수한 이후에도 저장된 상태를 이용해이전 내용으로 복원할 수 있습니다. 즉, Memento 패턴은객체의 캡슐화를 깨지 않으면서특정 시점의 ..
이터레이터(Iterator) 패턴 - GoF 패턴 16
·
디자인 패턴/GoF 디자인 패턴
1. 이터레이터(Iterator) 패턴이란?Iterator 패턴은 GoF 디자인 패턴 중 행위(Behavioral) 패턴에 속하는 방식으로,컬렉션 내부 구조를 노출하지 않고도그 안에 들어 있는 요소들을 순차적으로 접근할 수 있게 해주는 패턴입니다. 쉽게 말해,배열, 리스트, 트리, 집합처럼 여러 데이터를 담고 있는 객체가 있을 때그 내부가 어떻게 구성되어 있는지 몰라도외부에서 하나씩 차례대로 꺼내 사용할 수 있게 만드는 구조라고 볼 수 있습니다. 예를 들어 책 목록을 관리하는 객체가 있다고 가정해보면,클라이언트는 책 목록이 내부적으로 배열로 되어 있는지,리스트로 되어 있는지,다른 자료구조로 되어 있는지 알 필요가 없습니다. 클라이언트는 단순히 Iterator를 통해다음 책이 있는지 확인하고,있다면 다음 ..