일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Git
- Class
- 코딩테스트
- struct
- url
- init
- optional
- Protocol
- Swift
- Method
- extension
- property
- 디자인패턴
- Terminal
- tuist
- type
- interpace
- String
- 이니셜라이저
- Foundation
- UIKit
- IOS
- Unicode
- delegate
- Xcode
- initializer
- instance
- enum
- initalizer
- 스위프트
Archives
- Today
- Total
아리의 iOS 탐구생활
[iOS] Design Pattern과 Architectures 본문
반응형
# Design Pattern
- 설계할 때 자주 쓰이는 템플릿
- 선배들의 삽질 기록
- 코드의 모양새
디자인 패턴은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다.
## 사용 이유
디자인 패턴을 참고하여 개발할 경우 효율성과 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움이 된다.
- OOP의 다양한 문제 상황에 대한 예방
- 프로그래머 사이의 협업 효율 향상
- 프로그래머 사이의 의사소통 증진
- 코드의 안정화 및 최적화
- 코드의 재사용성 증가
주어진 패턴을 상황에 맞게 변경을 해서 사용해야 하는데 디자인 패턴에 집착하게 되면 유연하게 패턴을 적용 및 변경을 못하게 된다. 따라서 100퍼센트 지킬 필요는 없지만 명확하게 알아두면 쓸 일이 많다.
# Architectures
간단하게 프로그램의 구조라고 생각한다. 위키에서는 소프트웨어 내에서의 공통적인 발생 문제들을 해결하기 위한 일반적인 해결 방법이라고 설명하고 있다.
## 사용 이유
프로그램은 제대로 작성만 된다면 실행이 가능하다. 하지만 이런 프로그램들은 유지보수에 굉장히 많은 비용이 들어가며 실력있는 개발자가 보기에는 가독성이 떨어진다고 볼 수 있다.
## 좋은 아키텍처란?
- 균형잡힌 분배(Balanced Distribution)
- 테스트 가능 (Testablity)
- 사용하기 쉬운지 (Easy of Use)
- 단방향성 데이터 흐름(Unidirectional Data Flow)
4가지 조건을 충족 시키는 완벽한 아키텍처는 존재하지 않는다. 그러니깐 자신의 프로젝트 성격에 맞춰서 적절한 아키텍처 도입이 필요하다.
iOS에서는 4가지 조건 중 균형잡힌 분배를 위해서 크게 3가지로 나누어 코딩이 진행된다.
- Model
데이터 조작이 일어나고 이를 담당하는 부분 - View
사용자에게 보여주는 시각적인 부분으로 UI에 해당. - Controller / Presenter / ViewModel
이 부분은 Model과 View 사이의 중재자로 View를 통해 발생한 사용자의 액션에 따라 동작하며 Model에 값의 조정을 요청하며 Model 값의 변화에 맞게 View를 갱신하는 역할
그래서 iOS에서 가장 많이 사용되는 아키텍처 패턴인 MVC, MVP, MVVM가 있다.
# Design Patterns vs Architectures
- Architecture
큰 그림, 소프트웨어의 전반적인 큰 그림, 프로그램의 구조
ex) 서양 건축물 양식, MVC architecture - Design Patten
이 아키텍처 안에서 세세한 부분을 해결하는 해결방식
ex) 서양 건축물 안의 불편한 설계 부분을 수정해서 현재에 맞게 적용하는 것
Reference
반응형
'CS' 카테고리의 다른 글
ASCII, Unicode, UTF-8 문자표(CharacterSet)와 인코딩 (0) | 2021.09.14 |
---|---|
메모리 구조에 대해서 알아보자. (0) | 2021.08.12 |
Comments