프레임워크가 크게 중요하진 않은것같지만 React 기반.


1. Data가 있음. 여러개. 한 1만개 정도.


2. View A 는 각 Data 마다 1:1 대응되는 ViewA_DataView가 있음


3. ViewA_DataView는 클릭하면 포커스 상태가 되고 쉬프트 클릭 등으로 여러개 동시에 포커스가 가능함.


4. 또 다른 View B 에서는 View A 에서 포커스된 Data만 가져와서 보여줌.


5. Data는 View A나 View B가 아닌 다른 외부에 의해 삭제되거나 추가될 수 있음 (예를 들면 데이터를 추가한 후 Ctrl+Z를 눌러서 다시 삭제시키는 것 처럼, View A나 View B를 거치지 않고 순수 키보드 입력만으로 인해 데이터가 변경될 수 있음)



이럴 경우 가능한 가장 원초적인 설계는


Data 자체에 focus 값을 저장하게 하고, ViewA 에서 포커스 행위가 일어나면 Data.focus 값을 바꾸고,

ViewB 에서는 모든 data를 순회하면서 Data.focus == true 인것만 뽑아서 보여주기


인데,


이럴 경우


1) Data는 어플리케이션의 전반적인 동작에 쓰이는 코어 데이터인 반면, ViewA, ViewB에서만 쓰이는 값을 Data에 넣는것은 굉장히 부자연스러움.

2) Data 개수가 많으면 한번 순회하는데 걸리는 시간도 무시할수없음 (많아야 1만개 정도라 상관없을것같기도하다)




그래서 지금은 ViewA를 관리하는 Controller 객체와, ViewA_DataView 의 상태를 관리하는 객체를 따로 만들어서 관리하고

ViewB는 ViewA의 Controller를 의존하도록 하고 있는데,


이럴 경우 Data가 외부 상태에 의해서 추가,삭제되는 상황을 전부 콜백받으면서 관리해야하는 상황이 돼서 이것도 이것대로 쓰레기같은 디자인이란 말이지



글 읽어도 무슨말인지 모를것같지만 어떻게 표현해야할지 모르겠네