개발의 경험이 쌓이다 보면 자신이 전에 사용했던 코드와 유사한 기능을 구현해야 해서 이전의 코드를 들여다 보게되는 경험을 하게 되는데 이때 전에 사용한 코드를 그대로 사용하기도 하고 변형해서 사용하기도 한다.
디자인 패턴은 설계자로 하여금 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도와준다. 또한 패턴을 쓰면 이미 만든 시스템의 유지보수나 문서화도 개선할 수 있고, 클래스의 명세도 정확하게 할 수 있으며, 객체 간의 상호작용 또는 설계 의도까지 명확하게 정의할 수 있다.
https://ko.wikipedia.org/wiki/%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4#%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99%EC%97%90%EC%84%9C%EC%9D%98_%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4
https://en.wikipedia.org/wiki/Software_design_pattern
https://readystory.tistory.com/114
https://shoark7.github.io/programming/knowledge/what-is-design-pattern