|
카테고리
이전블로그
|
우연히 게임의 객체시스템(http://beforu.egloos.com/tb/4034893) 이란 매운 맛나리님의 포스팅을 보고 최근에 비슷한 고민을 했었던 기억이 나 처음으로 이글루에 포스팅을 해보게 됐다.
트랜잭션 객체로 하위 컴포넌트를 제어하는 구조는 Facade 패턴을 응용한(실제 구현은 Wrapper Facade 패턴으로 되겠지요?) 구조인데 트랜잭션(Task)의 수가 작고 명확할 경우는 문제가 없지만 요구되는 트랙잭션의 수가 늘어 날 수록 Facade 패턴의 특성상 1. 객체가 비대(heavy)해지거나 2. Facade 객체의 수가 늘어나는 문제는 피할수가 없을 것 같았다. 또 기능적인 구조로는 SRP를 지키는것 같지만 실제 구현에서는 객체의 의존관계(Dependuncy)문제는 M$ COM의 IUnknown 같은 인터페이스로 디자인을 하지 않는 이상 매우 복잡해지고 과연 이것을 SRP를 지킨다 할 수 있을까 하는 의문을 가질 수 밖에 없었다. OCP 관점에서 보았을때도 구현 컴포넌트 객체는 CP가 지켜지지만 트랙잭션 객체의 OP는 컴포넌트의 CP를 보호하지만(CP를 위임한 경우) 그자체의 OCP는 깨어 버리는 결과를 가지는 것 같은 느낌이다. 내가 선택한 방법은 Middle tier를 두고 각 Task를 하위 컴포넌트의 관계 설정에 의해 컴포넌트간의 Task 수행을 한다는 것이다. 기능을 위한 컴포넌트는 각자의 기능만 구현을 하고 여기에 OP를 위하여 In/Out 만 정의하여 이벤트/통신 컴포넌트에 대한 최소한의 종속성을 가져지는 것을 허용하고 각 컴포넌트는 미들웨어 컴포넌트(이벤트/통신등을 담당하는)와 DIP로 관계 설정을 하게 하니 상당히 깔끔한 구조가 나왔다. 나의 경험으로 각 객체간의 의존관계가 복잡한 시스템을 더 복잡하게 만드는 가장 큰 요소이며 이것을 줄이는 방법은 각 컴포넌트 객체가 middle tier를 바라 보는 DIP가 현재로서는 최선이라는 결론이다.
|
이글루링크
최근 등록된 덧글
|