인프런 커뮤니티 질문&답변

whatcode님의 프로필 이미지
whatcode

작성한 질문수

아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)

질문 드려요!

해결된 질문

작성

·

405

·

수정됨

0

안녕하세요 강의를 보다 헷갈리는 부분이 있어서 질문드립니다. 😅

강의 중 Massive View Controller? 라는 챕터에서 강사님이 설명해주신 UIViewController의 책임을 제외한 네트워크통신 로직 또는 로컬데이터 저장하는 로직등에 관한 코드등을 임의로 Controller에 추가하면 비대해질 수 있다고 하셨는데 두 가지 예시는 데이터를 처리하는 로직이라고 생각이 듭니다. PDS의 사상으로 나누면 도메인으로 생각하는 것이 맞을까요?
🤔 CocoaMVC에서 해당 로직 등에 관한 정확한 제시가 없는 부분이 개발환경에 따른 영향이 아닌 CocoaMVC아키텍처 패턴에서 문제로 봐야될까요?
🤔 CocoaMVC에서 해당 로직 등은 그럼 어디에 담당하는 것이 맞는지?
고민이 됩니다.
따라서 CocoaMVC에서 다른 아키텍처패턴등이 파생된 것이라고 볼 수 있을까요?

답변 2

1

배언수님의 프로필 이미지
배언수
지식공유자

답변이 올라가기 직전에 질문이 수정되었네요.

말씀하신대로 도메인 영역의 작업이 맞습니다.

Cocoa MVC에서도 모델이 처리하는 작업이며, Cocoa MVC에서 파생된 아키텍처 패턴은 없습니다. Cocoa MVC는 옵저버 패턴으로 모델과 뷰가 연결되어 있는 것이 뷰와 모델의 재사용성을 떨어뜨린다고 생각했기 때문에 뷰와 모델 간의 통신을 컨트롤러를 통하게끔 만든 아키텍처일 뿐입니다.

whatcode님의 프로필 이미지
whatcode
질문자

답변해주셔서 감사합니다.
기존에 당연하게 Controller에서 네트워크통신을 담당한다는 생각을 해서 헷갈렸던 것 같습니다.😅
앞서 설명해주신 예시만 본다면, 도메인영역의 작업등을 의도와 다르게 Controller가 가져간다면 MassiveViewController가 되버리고 이는 GUI아키텍처사상에서 어긋나버리기 때문에 해당 문제를 해결했다고 하는 패턴은 전제가 잘못된 것이라고 예시를 들어주신거라고 이해가 되었습니다.

1

배언수님의 프로필 이미지
배언수
지식공유자

안녕하세요.

네트워크 통신이나 데이터베이스 활용은 비즈니스 로직에 해당되는 것이고 기본적으로 비즈니스 로직의 처리는 모델 계층의 책임입니다. 비즈니스 로직의 처리를 담당할 계층을 명시적으로 제시하는 등 베스트 프랙티스를 자체적으로 제공하려는 개발환경도 있고 전혀 언급하지 않는 개발환경도 있습니다. 굳이 언급이 없어도 프레젠테이션 레이어와 비즈니스 레이어를 분리하는 것은 일반적인 내용이므로 그런 명시적인 언급이 없다는 것 자체를 개발환경의 영향이라고 보기는 어렵습니다.

MVP나 MVVM에서도 앞서 설명한 내용들은 동일합니다. MVP나 MVVM이 탄생한 이유는 각각의 섹션을 참고해주세요.

whatcode님의 프로필 이미지
whatcode

작성한 질문수

질문하기