HalfNetwork에 추상 팩토리 패턴 적용 Programming

HalfNetwork는 현재 Proactor모델과 Reactor모델을 지원합니다. Proactor 모델을 사용하려면 ProactorManager를, Reactor모델을 사용하려면 ReactorManager를 사용하면 됩니다. 하지만 두 Manager에 비슷한 코드가 많아서 추상 팩토리 패턴을 사용해서 코드의 중복을 없애는 리팩토링을 수행하였습니다. 변경된 class diagram은 아래와 같습니다.

Head First Design Patterns의 피자가게 예제랑 비슷합니다. NetworkFacade를 중심으로한 Facade 패턴을 설명하는 class diagram은 나중에 별도로 그려야 겠습니다. 여기에 더 넣으면 복잡해져서 이해에 방해만 될 것 같네요.

ProactorFactory를 생성하여 NetworkFacade로 넣어주면 Proactor 모델로 동작하고, ReactorFactory를 넣어주면 Reactor 모델로 동작합니다. 코드로 설명하자면
이전 Proactor 사용
ProactorManagerInstance->AddAcceptor(port, RecvQueueID);
ProactorManagerInstance->Open();
이전 Reactor 사용 코드
ReactorManagerInstance->AddAcceptor(port, RecvQueueID);
ReactorManagerInstance->Open();

변경된 코드
NetworkFacadeInstance->Create(new ProactorFactory);
NetworkFacadeInstance->AddAcceptor(port, RecvQueueID);
NetworkFacadeInstance->Open();

NetworkFacadeInstance->Create(new ReactorFactory)로 바꾸어주면 ReactorManager가 됩니다.



핑백

  • flexible gameserver : HalfNetwork 사용자를 만나다 2009-05-31 23:01:07 #

    ... 이 말씀해주신 몇가지 불편사항 SourceForge에 올라와 있는 클래스 다이어그램 이해불가MFC 유저를 위한 배려 부족SourceForge에 카테고리 분류가 이상한 듯1번은 여기와 여기에 있는 클래스 다이어그램인데, 생각해보니 라이브러리에 대해 자세히 알고 싶은 사람들을 위한 그림이었고 라이브러리 사용자들은 몰라도 되는 그림이더군요. 그래서 아래 그림으로 대 ... more

덧글

댓글 입력 영역