[안드로이드] 디자인 패턴

dada·2021년 12월 18일
0

Android

목록 보기
19/24
post-thumbnail

매번 mvvm아키텍쳐를 사용해서 프로젝트를 할때마다 repository 디자인패턴을 사용했다. 아무 의심없이 사용했지만 디자인 패턴이 무엇인지 정확한 이해가 필요하다고 생각했다. 이번 기회에 알아봐야겠다!

✅디자인 패턴 왜 등장했을까?

  • 객체지향 소프트웨어를 잘 설계하는건 어렵다. 특히 재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 더 힘들다. 왜냐면, 설계를 할때는 지금 당장 갖고 있는 문제를 해결할 수 있어야 하는데 나중에 생길수 있는 문제나 요구사항들도 수용할 수 있도록 일반적이고 포괄적이어야하기 때문이다.

  • 이를 위해 설계할 때 고려사항으로 SOLID원칙 등 객체지향적 소프트웨어 설계 방법론이 있고, 현업에서는 이에 따라 개발하기 위해 노력하고 있다.

    컴퓨터 프로그래밍에서 SOLID란 로버트 마틴[1][2]이 2000년대 초반[3]에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다.[3] SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부다
    출처)위키백과

  • 개발을 하다보면 이전에 사용했던 코드와 유사한 기능을 구현해야 해서 이전의 코드를 배끼는 경험을 종종 하는데(Room쓸 때 DAO불러올 때 이런경험이 있다!) 이런거 재사용할 수 있도록 설계할 수 없을까?

  • 그래서 나온게 디자인 패턴이다. 디자인패턴은 설계자로 하여금 재사용 가능한 설계는 선택하고 안되는건 배제하도록 도와준다. 특히 패턴을 쓰면 이미 만든 시스템의 유지보수나 문서화도 개선할 수 있고 클래스 명세도 정확하게 할 수 있고 객체 간의 상호작용이나 설계 의도까지 명확하게 정의할 수 있다.

  • 아키텍쳐: 소프트웨어 구조
    디자인 패턴: 소프트웨어에서 공통적으로 발견되는 문제를 해결하기 위한 노하우이면서 재사용 가능한 해결책=올바른 설계를 빨리 하자!

✅디자인 패턴 구체적으로 알아보자!

  • 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션이다. 디자인 패턴계의 교과서라고 불리는 [ GoF의 디자인패턴 ]에서는 객체지향적 디자인 패턴의 카테고리를 생성패턴 구조패턴 행동패턴 3가지로 구분하고 있다.
  • 이 패턴과 관련된 정의들을 보면,
    패턴 이름(Pattern Name)
    • 패턴의 이름은 해당 패턴의 솔루션을 담고 있는 경우가 많습니다. 따라서 설계에 대한 생각을 더욱 쉽게 할 수 있고, 개발자들 간의 의사소통이 원활해집니다.
      문제(Problem)
    • 언제 패턴을 사용하는가를 서술하며 해결할 문제와 그 배경을 뜻합니다. 문제를 제시함으로써 패턴을 적용하는 것이 의미 있는 사례를 소개하겠습니다.
      해법(Solution) 및 구현(Implementation)
    • 앞서 2번에서 다룬 문제(Problem)에 대하여 어떻게 해결할 수 있을 것인가에 대해 해결책을 제시하고, Java를 통해 예제 코드를 다루겠습니다.
      결과(Consequence)
    • 디자인 패턴을 적용해서 얻는 결과와 장단점을 서술합니다.

✅디자인 패턴 공부 방법?

  • 생성(Creational), 구조(Structural), 행동(Behavioral) 패턴이 각각 어떤 문제들을 해결하는지 파악
  • 패턴들 간의 관련성을 파악
  • 비슷한 목적의 패턴들을 모아서 함께 공부
  • 예를 들어, 추상 팩토리 패턴을 공부했다면 이어서 팩토리 메소드 패턴을 학습해보고 각각 어떤 공통점과 차이점이 있는지 비교하여 헷갈리지 않게 정리

✅디자인 패턴 예제랑 같이 공부해보자


생성패턴-팩토리 패턴
Delegate Pattern

  • 위 두 링크는 디자인패턴 공부를 위해 매우 좋은 자료가 정리되어있다. 하나씩 천천히 공부하면서 내걸로 만들자!

참고: https://readystory.tistory.com/114

profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍

0개의 댓글

관련 채용 정보