[iOS] 디자인 패턴

디자인 패턴의 종류

구조적 디자인 패턴

object가 어떻게 구성되고 결합되어 더 큰 구조를 형성하는지를 설명하는 패턴

ex ) MVC, MVVM, Facade

행동 디자인 패턴

object간 어떻게 통신할 것 인지를 설명

ex) Delegation, Strategy, Observer

생성 디자인 패턴

object를 생성, 인스턴스화 하는 방법을 설명

ex) Singleton, Builder, Prototype

디자인 패턴의 비판

디자인 패턴을 알고 사용한다고 잘 설계된 소프트웨어를 만들 수 있다는 보장은 없다.

무수한 패턴 중 각 패턴을 언제 어떻게 사용하는지가 중요하다.

옳바르게 패턴을 사용하기 위해 주로 접할 수 있는 몇 가지 비판부터 이해해보자

과도한 패턴 사용

디자인 패턴의 남용은 프로젝트가 지나치게 복잡해 질 수 있다

패턴을 적용시키기 전 해결해야할 문제를 명확하게 하여 이런 문제를 최소화 할 수 있다.

많은 패턴이 현대 언어에 의해 중복됨

Swift같은 최신 언어들은 일부 패턴을 미리 구현하고 있어 다시 구현한다는 건 효율적이지 못할 수도 있다.

하지만 모든 패턴이 구현되어 있는 것은 아니다.

객체 지향 원칙을 배우는데에 있어 부정적

객체 지향을 완전 이해하고 디자인 패턴을 사용하면 더 효과적일 것이다.

즉, 객체 지향같은 기본부터 탄탄히 하고 디자인 패턴을 사용하자

디자인 패턴의 이점

공통 언어를 만듬

솔루션에 대한 자세한 설명 대신, 어떤 패턴이 효과적일 것이라 생각하는지 간단히 설명이 가능하다

즉, 개발자간의 커뮤니케이션을 간소화 할 수 있다.

개발자 온보딩을 가속화함

코드간의 유사점을 찾을 수 있음

다양한 디자인 패턴을 알고 이해하면, 코드에서 쉽게 발견이 가능하다

따라서 해당 패턴의 코드를 사용하느데에 더 익숙해질 수 있다.

요약

디자인 패턴은 구체적 구현이 아닌 코드 작성을 위한 출발점이다

디자인 패턴은 이해가 쉽고 유지/보수하기 쉬운 코드를 작성하는데 도움이 되는 모범 사례를 구성함

디자인 패턴은 구조적 / 행동적 / 생성 3가지 주요 패턴이 있다

댓글남기기