본문 바로가기

(비정기) Dlbo's Post

Design Pattern & Network, 3. Observer & Client.

아....

코드를 첨부하긴 해야 하는데,

미리 만들어놓은 레퍼런스가 없으니 좀 곤란하군요.

한번 따로 준비해서 올려야 할듯...

-----------------------------------------------------------------------------------------

옵저버 패턴이라는건..

사용자 삽입 이미지

요런 놈을 연상시키게도 하지만 -_-;;

이름만 같을 뿐, 약간은 다른 기능을 가집니다.

스타크의 옵저버는 숨어있는 것들을 찾아냅니다.

반면, 옵저버패턴은 자신에게 등록된 클라이언트들에게 '통보'를 하는 역할을 갖습니다.

가장 간단한 예를 들자면 바로 이거지요.

사용자 삽입 이미지

자신의 통신사에 등록된 모든 고객에게 재난 문자나 여러 정보를 통보해주는 서비스.

그 서비스를 해주는 객체가 옵저버입니다.

이러한 패턴이 옵저버 패턴.

여기서 잠깐, 옵저버는 자신의 고객들에게 선별적으로 각각 다른 통보를 할 수 없습니다.

좀 비효율적일수도 있겠지요?

근데 이게 왜 중요하느냐...

바로 게임 서버를 생각해보면 알 수 있습니다.

1 : 1로 맞고를 치고 있습니다.

이번에 뒤집어 까서 나온 패로 인해 쪽이 난다면 -_-

본인은 쓰리고까지 지나서 스톱을 해야 하는 상황.

"응-_-가"가 나오면 이기는데...

본인에게는 응-_-가패가 나와 쪽이 되고,

상대방에게는 전혀 다른 엉뚱한 패가 나온걸로 보인다면

서로 차질이 생기겠지요?



자.

저 옵저버-서버 라는 클래스가 옵저버패턴의 형태라고 볼 수 있습니다.

개발새발로 대충 짜놓은 코드라 완전히 맞는건 아니지만 말이지요 -_-;;

서버가 저렇게 모든 클라이언트에게 동일한 정보를 쏘아 줄 때, 이를 옵저버 패턴이라 볼 수 있습니다.

근데 여기서 잠깐.

그럼 옵저버 패턴이면 서버 얘기를 하지 왜 클라이언트를 제목에 박아넣었느냐. =_=

....

서버는 지난번에 얘기를 했기 때문이에요 -_-. 돌던지지 마세요;

사실 옵저버 패턴이라는 것은 정보를 뿌리는 Sender와 정보를 받는 Client가 결합되야 하는 구조이기

때문에 클라이언트를 언급 한 것입니다.

클라이언트는 서버가 보내는 정보를 같은 규칙에 의해 받아내야 하지요.

네트워크에서는 이 규칙을 "프로토콜"이라 부릅니다.

http, ftp, TCP/IP, UDP 같은 여러 프로토콜들이 존재하지요.

------------------------------------------------------------------------------------------

... 너무 막 휘갈긴거같은 찝질한 느낌...

사용자 삽입 이미지

이런 기분이랄까요.