아리의 iOS 탐구생활

[iOS] Design Pattern과 Architectures 본문

CS

[iOS] Design Pattern과 Architectures

Ari Lee 2021. 10. 20. 21:34
반응형

# 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

 

소프트웨어 디자인 패턴 - 위키백과, 우리 모두의 백과사전

소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로

ko.wikipedia.org

 

Architectural pattern - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Term in software engineering for a reusable solution to a common problem An architectural pattern is a general, reusable solution to a commonly occurring problem in software architectu

en.wikipedia.org

 

Model controllers in Swift | Swift by Sundell

Proper encapsulation of logic is one of the most important things when it comes to building well-architected apps and systems. By limiting access to a given value or object to those that really need it, we can create more well-defined relationships and red

www.swiftbysundell.com

 

iOS Architecture Patterns

Demystifying MVC, MVP, MVVM and VIPER

medium.com

 

반응형

'CS' 카테고리의 다른 글

ASCII, Unicode, UTF-8 문자표(CharacterSet)와 인코딩  (0) 2021.09.14
메모리 구조에 대해서 알아보자.  (0) 2021.08.12
Comments