
“바퀴를 다시 발명하지 마라(Don’t reinvent the wheel)”
이미 만들어져서 잘 되는 것을 처음부터 다시 만들 필요가 없다는 의미이다.
디자인 패턴은 소프트웨어 공학론 안의 좋은 코드를 설계하기 위한 일종의 설계 디자인 방법론이다.
좋은 코드란 가독성,간결함 등 여러 방면이 있지만, 디자인 패턴에서는 설계적 관점에서의 좋은 코드를 말한다.
디자인 패턴은 의사소통 수단의 일종으로서 문제를 해결해준다.
예를 들어 문제 해결의 제안에 있어서도 “기능마다 별도의 클래스를 만들고, 그 기능들로 해야할 일을 한번에 처리해주는 클래스를 만들자.”라고 제안하는 것보다"Facade 패턴을 써보자."라고 제안하는 쪽이 이해하기 쉽다.

특정 객체가 생성되고 변경되어도 전체 시스템의 변화는 초소화되도록 만들어 주어, 시스템의 확장이나 유지보수시 최소 비용이 들도록 만들어 준다.
소프트웨어 디자인 패턴에서 싱글톤 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글톤 패턴이라고 한다. (파이썬 모듈이 싱글톤)
= 적절히 잘 써야 좋다.
여러 클래스들로 이루어진 복잡한 구조를 가진 시스템의 효율적인 개발을 위해 구조를 분산하여 새로운 기능의 추가를 효과적으로 할 수 있도록 하는 패턴.
클래스나 객체를 조합해 더 큰 구조를 만드는 패턴.
객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴
객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다.
한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둔다.
객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다.
주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다.
