현재 구조

DB에서 데이터를 읽어오는 Selector 안에 Repository가 있다.

근데 Repository는 Updater도 쓴다.

외부 주입을 지키면서 Selector와 Updater가 같은 Repository를 쓰면 좋을 거 같다.

왜? 보통 Load 해온 데이터를 Update 할 경우가 많으니까. 물론 아닌 경우도 있음.

근데 왜 같이 쓰려고 해? 메모리 할당을 좀 줄일 수 있지 않을까?

고민한 방법은 두 가지

  1. Repository를 관리하는 struct를 하나 추가한다.

service마다 사용하는 Repository들은 다르다.

그러니까 service를 생성할 때, Repository를 넣어주자.

  1. 필요할 때마다 생성해서 넘겨주자. 대신 가급적 스택을 쓰거나, pool을 써서 메모리를 아끼면 좋겠다.

1번이 먼저 아이디어가 생각나고, 그 이후에 2번이 생각 났다.

그러다 보니까 1번에서 발생할 이슈가 생각 났다.

데이터가 일반적으로 어떤 것이 업데이트 될지 특정할 수 있으면 가능하지만,

예를 들어 상점에서 어떤 것을 산다던가, 마비노기 모바일에서 다이스를 열면 장비가 뜨는데 그 장비의 부위가 랜덤이라던가,, 등등 랜덤인 곳이 어렵다.

이런 곳에서는 외부 주입을 할 경우, 랜덤에 추가된 모든 데이터에 관한 Repository를 미리 추가를 해놔야 할 거 같다는 생각이 들었다.