-
TIL MVC, Design PatternsTIL 2023. 1. 2. 12:37
- SW Architecture와 SW Design Pattern의 개념은 어디서부터 출발했을까?
- SW Architecture
- 소프트웨어 아키텍처는 1968년 Edsger Dijkstra 와 1970년대 초 David Parnas의 연구에서 시작
- SW 디자인패턴
- 1977년 건축학적인 디자인 패턴 개념이 시작된 이후 1987년 Kent Beck과 Ward Cunningham이 프로그래밍에 패턴을 적용하는 실험을 시작했고, 이후 GoF(Gang of Four)가 Design Patterns: Elements of Reusable Object-Oriented Software 라는 책이 1994년도에 출판하면서 디자인 패턴이 컴퓨터 과학에서 인기를 얻기 시작
- 1977년 건축학적인 디자인 패턴 개념이 시작된 이후 1987년 Kent Beck과 Ward Cunningham이 프로그래밍에 패턴을 적용하는 실험을 시작했고, 이후 GoF(Gang of Four)가 Design Patterns: Elements of Reusable Object-Oriented Software 라는 책이 1994년도에 출판하면서 디자인 패턴이 컴퓨터 과학에서 인기를 얻기 시작
- SW Architecture
- SW Architecture와 SW Design Pattern의 개념은 왜 필요할까?
- 복잡한 구조 단순화 시킬 수 있음
- 해결 방안 도출 할 수 있음
- 효율적인 코드 작성이 가능함
- SW Architecture
- 시스템이 구축되기 전에 동작을 분석할 수 있고, 프로그램 초기 설계 결정에 도움을 준다. 이후 유지보수의 시간과 비용을 생각한다면 아키텍처의 설계는 중요하다!
- SW Design Pattern
- 디자인 패턴은 소프트웨어 디자인의 일반적인 문제들에 대한 해결책들을 모은 것인데 문제들을 다루지 않더라도 디자인 패턴을 알고 있으면 객체 지향 디자인의 원칙들을 사용해 많은 종류의 문제를 해결하는 방법들을 배울 수 있기 때문이다.
- 팀원들과 더 효율적으로 의사 소통 하는데 사용할 수 있다.
- SW Architecture와 SW design pattern의 두 개념의 차이점은 무엇일까?
- 디자인 패턴은 프로그램을 개발하는 과정에서 나타나는 코드 수준의 문제를 해결하기 위한 패턴화한 방법
- 아키텍처는 소프트 웨어를 구성하는 구성요소(모듈/컴포넌트) 간의 관계를 관리하는 시스템 구조 프로그램의 뼈대를 설계하는 것, 설계도!
- 애플이 이야기하는 MVC구조는 무엇을 구분짓는 용도, 왜 구분지을까?
- 구분 짓는 용도
- Model
- 데이터
- 내부 비즈니스 로직을 처리 하기 위함
- 애플리케이션이 무엇을 할지 정의
- View
- 유저에게(화면에) 보여주기 위한 값
- Controller
- view, model을 중재
- model이 어떻게 처리할 지 알려주는 역할
- 화면의 로직처리(사용자의 요청을 받아서 처리하는 부분을 구현, 요청을 분석해서 model과 view에게 업데이트를 요청하는 부분)
- Model
- 왜 구분 지을까?
- 테스트를 독립적으로 할 수 있다.
- 유지보수 하기 좋다.
- 코드를 이해하기 쉽다.
- 재사용할 수 있다.
- 구분 짓는 용도
- 애플이 사용하고 있는 사례
- UIkit
- UIKit 앱의 구조는 MVC(Model-View-Controller) 디자인 패턴을 기반으로 하며 객체는 목적에 따라 구분된다.
- Model 객체는 앱의 데이터와 비즈니스 로직을 관리.
- View 객체는 데이터의 시각적 표현을 제공.
- Controller 객체는 모델과 뷰 객체 사이의 다리 역할을 하여 적절한 시간에 데이터를 이동.
🏷️ 참고 사이트
https://developer.apple.com/documentation/uikit/about_app_development_with_uikit
https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52
'TIL' 카테고리의 다른 글
TIL 💡 swift compactMap(_:), enumerated() (1) 2022.12.24 TIL 💡git revert, reset 사용법의 차이, swift 전달인자 레이블(argumentLabel) (0) 2022.12.21 TIL 💡 github과 git의 차이, git 저장위치, 터미널 명령어, 플로우 차트 그려보기 (0) 2022.12.19 - SW Architecture와 SW Design Pattern의 개념은 어디서부터 출발했을까?