728x90
디자인 패턴은
Design Patterns: Elements of Reusable, Object-Oriented Software 라는 책에서 처음 다뤄졌다.
흔히 발생하는 소프트웨어 개발 문제에 대한 재사용 가능한 템플릿 솔루션을 다웠다.
디자인 패턴은 어떤 특정 상황이 아닌, 문제 상황에서 해결을 위해 차용할 수 있는 솔루션인 것이다.
- not concrete implementation (정확히 정해진 완벽한? 규격? 이 없다)
-> serve as starting points for writing code (디자인 패턴을 뼈대로 시작하는 것)
디자인 패턴 3가지 종류
- Structural design pattern: 큰 구조를 위해 어떻게 object가 결합 되는지 설명한다. 예를들어 MVC, MVVM, Facade 가 있다.
- Behavioral design pattern: Object간에 어떻게 통신하는지 설명한다. 예를들어 Delegation, Strategy and Observer가 있다.
- Creational design pattern: Object를 어떻게 만들고 초기화 하는지 설명한다. 예를들어 Builder, Singleton, Prototype 이 있다.
* MVVM 이나 MVC는 앱 전체 또는 서브 시스템의 아키텍처를 이루기 때문에 아키텍처 패턴으로 볼 수 도 있다. 그래서 design pattern 보다는 넓은 scope 이다. 근데 componet단으로 생각했을때 MVC 나 MVVM 도 다른 종류의 디자인 패턴과 함께 사용될 수 있기 때문에 디자인 패턴 영역에 포함시켰다고 한다. (책에서)
디자인 패턴의 한계
단지 디자인 패턴을 알고 적용한다고 well-architected software를 만든다는 뜻은 아니다. 상황에 맞는 적절한 패턴을 적용하는 것이 중요하다.
- 디자인 패턴을 과도하게 적용하면 프로젝트가 복잡해질 수도 있다.
- Swift와 같은 현대의 high-level language에 몇몇의 디자인 패턴은 불필요할 수도 있다.
디자인 패턴의 장점
- 디자인 패턴은 공통의 언어를 만들어 준다. (의사소통 원활)
- 새로운 개발자가 프로젝트에 onboarding하는걸 쉽게 만들어 준다.
- 더 나은 사람으로 만들어 준다? (self-imporvement?)
- 디자인 패턴을 알면 코드간 유사성을 찾을 수 있게 해준다. (패턴 찾기 쉽게 해준다.)
요약하면
- 디자인 패턴은 완벽한 구현이 아닌 코드를 작성하는데 기초가 되는 아이디어 이다.
- 디자인 패턴은 가독성과 유지보수가 좋은 코드를 작성하는 방법들이 하나씩 모여 완성된 집합이다.
- structural, behavior, creational 의 3가지 디자인 패턴 타입이 있다
- 디자인 패턴에 대해 장점도 있고 단점도 있지만 아는게 중요하다.
학습할 디자인 패턴 목록
기초
- MVC
- Delegation
- Strategy
- Singleton
- Memento
- Observer
- Builder
중급
- MVVM
- Factory
- Adapter
- Iterator
- Prototype
- State
- Multicast Delegate
- Facade
고급
- Flyweight
- Mediator
- Composite
- Command
- Chain-of-Responsibility
- Coordinator
728x90
'iOS > Design Pattern' 카테고리의 다른 글
Design Pattern - Singleton Pattern (0) | 2020.08.09 |
---|---|
Design Pattern - Strategy Pattern (0) | 2020.08.07 |
Design Pattern - Delegation Pattern (0) | 2020.08.06 |
Design Pattern - MVC (0) | 2020.07.14 |
Design Pattern - Class Diagram (0) | 2020.07.14 |
댓글