내가 자바 NIO 채널로 논블럭 비동기로 서버 만들고있는데
지금은 main , TCPServer , Client로 3개의 자바 파일만 있음.
쫌 객체지향적으로 찰지게 설계해서 응집도는 높이고 결합도는 낮추고 싶은데 모르겠음.
Client 클래스 이건 클라 수만큼 만들어지는데
Client에는 recv() , send() 함수가 있음.
생성자에서 각종 셋팅 때리고 recv() 실행함.
recv()는 asyncroniseSocketChannel을 read()해놓음
나중에 읽히면 오버라이딩된 complete() 함수가 실행됨
complete()저거 쓰레드에서 콜백된 함수더라
그리고 complete()안에서 받은 패킷이 어떤 유형인지 체크하고그거에 맞는 행동을 하겠지
대충 이게 구조임
근데 내가 ExecuteMessage이라는 클래스를 하나 싱글톤으로 만들고
저기 Client에서 read 감지를 ExecuteMessage 클래스에 있는 메소드에서 받고싶음.
뭐 대충 onExecute(Client client) 이런식으로 받고싶은데
어떻게 해야함??
글구 이게 어떻게 해서 구현이 됬다고치자
근데 문제는 클라수가 여럿이면 동시에 read 발동될 수도 있는거고
그럼 ExecuteMessagme 클래스는 하나고 메소드 onExecute도 하난데 겹쳐짐 현상? 일어나지 않나?
자동 싱크로나이즈 되는건가?
구글에 쫌 검색했는데 보통 옵저버 패턴을 쓰는거 같은데
문제는 complete()도 쓰레드에서 콜백되서 실행되는건데 이걸 저기 메소드로 넘기면 음..
복잡하다 객체지향직으로 쫌 바꾸고싶은데..
댓글 0