매번 mvvm아키텍쳐를 사용해서 프로젝트를 할때마다 repository 디자인패턴을 사용했다. 아무 의심없이 사용했지만 디자인 패턴이 무엇인지 정확한 이해가 필요하다고 생각했다. 이번 기회에 알아봐야겠다!
객체지향 소프트웨어를 잘 설계하는건 어렵다. 특히 재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 더 힘들다. 왜냐면, 설계를 할때는 지금 당장 갖고 있는 문제를 해결할 수 있어야 하는데 나중에 생길수 있는 문제나 요구사항들도 수용할 수 있도록 일반적이고 포괄적이어야하기 때문이다.
이를 위해 설계할 때 고려사항으로 SOLID원칙 등 객체지향적 소프트웨어 설계 방법론이 있고, 현업에서는 이에 따라 개발하기 위해 노력하고 있다.
컴퓨터 프로그래밍에서 SOLID란 로버트 마틴[1][2]이 2000년대 초반[3]에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다.[3] SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부다
출처)위키백과
개발을 하다보면 이전에 사용했던 코드와 유사한 기능을 구현해야 해서 이전의 코드를 배끼는 경험을 종종 하는데(Room쓸 때 DAO불러올 때 이런경험이 있다!) 이런거 재사용할 수 있도록 설계할 수 없을까?
그래서 나온게 디자인 패턴이다. 디자인패턴은 설계자로 하여금 재사용 가능한 설계는 선택하고 안되는건 배제하도록 도와준다. 특히 패턴을 쓰면 이미 만든 시스템의 유지보수나 문서화도 개선할 수 있고 클래스 명세도 정확하게 할 수 있고 객체 간의 상호작용이나 설계 의도까지 명확하게 정의할 수 있다.
아키텍쳐
: 소프트웨어 구조
디자인 패턴
: 소프트웨어에서 공통적으로 발견되는 문제를 해결하기 위한 노하우이면서 재사용 가능한 해결책=올바른 설계를 빨리 하자!
생성패턴
구조패턴
행동패턴
3가지로 구분하고 있다.패턴 이름(Pattern Name)
문제(Problem)
해법(Solution) 및 구현(Implementation)
결과(Consequence)