질문리스트

기술노트

🎯 디자인 패턴 질문리스트

1. 반복자 패턴은 무엇이며, 장점은 무엇인가요?

=> 이터레이터를 사용하여 컬렉션 프레임워크에 요소에 접근하는 디자인 패턴이며, 클라이언트는 상세한 작동 방법을 모른채로 사용하게됩니다. 이로 인해 응집도가 높아지며, 접근을 인터페이스화 시켜 진행하기에 컬렉션 객체의 종류에 상관없이 접근 가능합니다.

2. 그렇다면 컬렉션 프레임워크에는 어떤 것들이 존재하나요?

=> 컬렉션 프레임워크의 주요 인터페이스로는 Set,List,Queue,Map등이 존재하며 데이터의 저장 목적에 따라 사용되는 자료구조의 형태의 객체입니다.

3. MVP 패턴과 MVC 패턴의 근본적인 차이점은 무엇인가요?

=> MVC 패턴과 MVP 패턴은 Controller가 Presentation으로 바뀌며 더 이상 Model과 View의 의존성이 높은 형태가 아니며, 서로의 상태에 관해 개입하지않고 관여하지않으며 모르는 상태입니다. 또한 기존 MVC 패턴에서는 View가 늘어남에 따라서 Controller의 개수도 증가하는 비효율적 구조였지만, MVP 패턴의 경우 코드의 재사용성이 높아 여러개의 프레젠터로 뷰를 컨트롤 할 수 있습니다.

4. 프레임워크의 특징

=> 프레임워크는 구체적이며 확장 가능한 기반코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어있습니다. 장점으로는 구조화, 추상화, 재사용성입니다. 좀 더 구조적이고 안정적이면서 유지보수가 쉽고 확장성이 뛰어나게 하기 위해 생겼습니다.


5. MVC 패턴에서의 모델 1과 모델 2의 가장 큰 차이점에 관하여 서술해주세요

=> 모델 2가 모델 1에 비해서 가지는 가장 큰 차이점이자 장점으로는 비즈니스 로직과 UI 로직의 분리입니다. 분리를 통해 협업으로 이득을 볼 수 있는 구조이며 유지보수성 또한 높아집니다. 다만 모델 1에 비하여 코드의 구현이 까다롭다는 점이 있으나 SOLID의 단일 책임 원칙을 고려하였을 시에 하나의 기능만을 담당하도록 분리하는 것이 옳은 방향이기에 현재 Spring MVC 또는 React와 같은 프레임워크에서도 모델 2 아키텍처로 고려되어 설계하고 있습니다.