객체 지향 프로그래밍 개발을 하면서 자주 발생하는 문제들을 해결하기 위해 사용되는 검증된 해결책의 모음입니다.
각 문제에 대한 정형화된 해결 방식을 제시하는 디자인 패턴을 사용하면 코드를 보다 유연하고 견고하게 작성할 수 있습니다.
예를 들어, 서로 디자인 패턴을 알고 있는 상태에서
'여기선 객체를 만들어 반환하는 함수를 통해 초기화 과정을 외부로부터 숨겨놓고 반환타입을 제어하는게 좋겠네요.' 보단
'여기선 팩토리 패턴을 사용하는게 좋겠네요.' 가 서로 이해하는데 더 편리할 것이다.
디자인 패턴은 객체 간의 관계를 유연하게 관리할 수 있는 구조를 제공해줍니다. 따라서 객체 지향 프로그래밍 구조를 구현하는데 유용합니다.
디자인 패턴은 크게 생성 패턴, 구조 패턴, 행위 패턴으로 구분됩니다.
객체 생성과 관련된 패턴으로, 객체 생성 과정을 추상화하거나 캡슐화시켜주는 매커니즘을 제공합니다.
객체나 클래스를 조합하여 더 큰 구조를 만들어 내는 패턴으로, 객체의 확장성을 높여줍니다.
객체나 클래스 간의 상호작용을 도와주는 패턴으로, 객체들 간 소통 방법이나 역할 할당을 도와줍니다.
디자인 패턴이 필요가 없는 상황에도 디자인 패턴을 적용해 코드가 더 복잡해질 수도 있다.
오히려 디자인 패턴을 사용하려고 하다가 빙 돌아가는 상황이 생길 수도 있으니 필요한 상황에 적재적소에 쓰는 것이 좋을 것이다.
각 디자인 패턴에 대해 자세하게 설명해주는 글도 있으면 좋을 것 같아요!