[GrenTalk] 설계..
design patterns 2009/06/27 01:59ㅁ: Me2Day등의 openAPI를 활용해서 별다른 서버사이드언어의 도움없이 메신져를 구현
ㅁ: Observer Pattern, Strategy Pattern의 복습을 목표로 함
comment: 댓글 ( 실제 대화 )
로그인 후 > 방 개설 > 대화창
> 방 입장 > 대화창 의 심플한 구조로 설계
* 누가 접속해서 방을 만들건 방은 따로 준비해둔 공용 ID로 생성 : List Viwer단계에서도 공용ID로 개설된 글 목록을 받아옴
---------------------------------------------------------------------------------------------------------------------------------------------------------------
클래스의 대략적인 구조로는....
- me2Day의 데이터를 긁어와서 최신글 이나 최신댓글을 갈무리하여 등록된 Observer에게 보내줄Me2DayData_on_TimerInterval
- 입력된 데이터를 가지고 방목록 및 대화 내용을 최신내용으로 update 할 GrenOutputWindow
- viewState가 변경될때마다 옵저버를 update시킬 GrenViwer
- 입력창을 통해 새글밑 새 댓글을 등록하면 me2Day에 해당내용을 전송할 GrenSender
이정도일듯 하고... 각각의 역활로는...
Me2DayData_on_TimerInterval [ IObserverable, ISubject ]
- IObserverable
update( str:String ); "roomList" or "talk"
:실제 viewer에서는 댓글이나 새글 둘중의 하나의 정보만 필요하기때문에
전달 받은 파라미터에 따라 최신 글을 받아와서 분석하는 Behavior나
최신 댓글을 받아와서 분석하는 Behavior를 동적으로 변경
- ISubject
addObserver, removeObserver,
notify():void
{
$O.update( string ); // 지정된 Behavior에 따라서 얻어진 최신 StringData를 옵저버에 전달
GrenOutputWindow[ IObserverable ]
- IObserverable
viewState: "roomList" or "talk"
update( str:String ); 받아온 string을 현재 ViewState에 따라 방 리스트를 업데이트 시키는 Behavior이나
대화내용을 업데이트 시키는 Behavior 에 전달
GrenViewer[ ISubject ]
- ISubject
사용자가 ListView <- -> TalkView 사이를 전환할때마다
등록된 옵저버( GrenOutputWindow, Me2DayData_on_TimerInterval)에게 notify !!
GrenSender [ ISendable, IObserverable ]
- ISendable
- send( str:String );
정해진 Behavior에 따라 새글및 새 댓글을 등록
- IObserverable
update( str:String ); "roomList" or "talk"
파라미터에 따라 Sendable에서 사용할 Behavior변경
// 헉.. 헉.. 일단 오늘 얘기 한것들.. 정리한다고 했는데.ㅡㅡ 빨리 UMLTool을 손에 익혀야지..
이렇게 쓰려니 쓰는 사람이나 보는사람이나 고생일듯...
오늘 얘기 안한부분도 적다보니 필요할것 같아서 넣었는데... 의견 달아주셈.
