2주차 : 주요 메카닉 구현
팀 회의 내용
- 멘토링 질문 및 피드백 회의
- 해상도 20:9 변경
구현한 내용
- MVC 패턴으로 리팩토링
- 탭 기능 완성
- 주문 내역 완성
MVC 패턴
: model - view- controller 는 사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향 없이 쉽게 고칠 수 있는 개발을 할 수 있다
modle : 데이터와 데이터를 처리하는 로직으로 상태를 나타낸다 . 뷰나 컨트롤러는 알지 못하며, 직접적인 참조를 가지고 있지 않는다 상태의 변경을 통지하기 위한 옵저버 패턴이나 이벤트를 사용할 수 있다
view : 화면에 정보를 표시하고 사용자 입력을 받는다 , 뷰는 모델을 알지만 모델에 대한 직접적인 참조를 가지지 않는다 대신 모델의 상태 변경에 대한 이벤트 또는 옵저버 패턴을 통해 모델과 통신한다
controller : 사용자 입력을 처리하고 모델 및 뷰를 업데이트한다, 모델과 뷰를 알고 있으나 모델과 뷰는 서로에 대한 직접적인 참조를 가지지 않는다 사용자 입력을 받아 모델을 업데이트하고, 모델의 상태 변화에 따라 뷰를 업데이트 한다
즉, 컨트롤러가 입력을 처리하고 모델을 업데이트하며, 뷰는 모델의 변화에 따라 화면에 정보를 갱신한다
또한 참조 관계는 모델이 뷰와 컨트롤러를 모르고, 뷰와 컨트롤러가 모델과 직접적인 참조를 가지면 안된다
장점 : 코드의 유연성을 높이고, 각 부분을 독립적으로 테스트하고 재사용할 수 있다
단점 : 각 부분의 상호작용 및 통신 로직이 복잡해질 수 있고 간혹가다 뷰와 컨트롤러 간의 통신이나 모델과 뷰 간의 동기화를 위해 중복 코드가 발생할 수 있어서 유지보수를 어렵게 만들 수도 있다 '
이번 프로젝트에서 UI를 구현할 때 MVC 패턴을 이용하여 데이터가 변경되는 로직은 Controller에 구현하였다
기술 면접 대비 9일차
Q : 배열과 List, ArrayList, Dictionary의 차이점을 설명해주세요
A : 배열과 List의 큰 차이점은 동적 할당 여부로 배열은 정적 할당, List는 동적 할당입니다
ArrayList는 같은 타입만 저장할 수 있는 배열과 List 와는 다르게 서로 다른 타입의 데이터를 저장할 수 있어서 데이터를 가져올 때 박싱, 언박싱이 발생합니다
Dictionary는 키와 값을 쌍으로 저장하고 특정 키를 통한 빠른 검색이 특징입니다
a.(꼬리질문) Dictionary는 어떻게 구현해야 하나요?
: 해시 테이블 기반으로 구현되어 있고 해시테이블은 키를 사용하여 값을 검색하는 구조로 각 키에 대해 코드를 게산하고, 해시코드를 사용하여 값을 저장하는 방식으로 구현합니다
b.(꼬리질문) Dictionary가 검색이 빠른 이유는 무엇인가요?
:해시 코드는 키를 배열의 인덱스로 변환하는 데 사용되고 상수시간에 이루어지므로 효율적인 검색이 가능하게 됩니다
(꼬리질문) 어떨 때 사용하나요 ?
배열은 변경 가능성이 없는 고정된 길이로 사용할 때
List는 요소를 자주 추가하고 제거할 때 용이
Dictionary : 빠른 검색에 용이
'TIL' 카테고리의 다른 글
[TIL] 내일배움캠프_Unity 최종 프로젝트 2주차: 주요 메카닉 구현 5, 기술 면접 대비 11일차 (1) | 2023.11.03 |
---|---|
[TIL] 내일배움캠프_Unity 최종 프로젝트 2주차: 주요 메카닉 구현 4 , 기술 면접 대비 10일차 (0) | 2023.11.02 |
[TIL] 내일배움캠프_Unity 최종 프로젝트 2주차: 주요 메카닉 구현 2, 기술 면접 대비 8일차 (1) | 2023.10.31 |
[TIL] 내일배움캠프_Unity 최종 프로젝트 2주차: 주요 메카닉 구현 1, 기술 면접 대비 7일차 (1) | 2023.10.30 |
[TIL] 내일배움캠프_Unity 최종 프로젝트 1주차: ScriptableObject 복습, 기술 면접 대비 6일차 (0) | 2023.10.30 |