저는 4 명의 갱이 스스로 디자인 패턴을 다음과 같이 분류한다고 믿습니다.
자주 발생하는 문제에 대한 일반적인 해결책 *
따라서 동일한 유형의 문제가 발생했을 때 패턴이 관련됩니다. 그리고 이것은 "디자인 패턴"이라는 용어에 문제를 일으 킵니다. 패턴은 반복적으로 발생하는 인식 가능한 것입니다. 실제로는 디자인 패턴이없고 문제 패턴이 있습니다.
일부 프로그래밍 언어에는 이러한 문제 중 일부에 대한 고유 한 솔루션이있을 수 있습니다. "디자인 패턴"책은 CLOS를 사용하는 경우 방문자 패턴이 거의 가치가 없다고 언급합니다. 다중 디스패치는 CLOS에 의해 기본적으로 지원되므로 방문자 패턴이 해결하려는 문제입니다.
또한 .NET 프레임 워크에는 이벤트를 여러 리스너에 게시하는 이벤트 메커니즘이 내장되어있어이 컨텍스트에서 관찰자 패턴의 관련성이 떨어집니다.
데스크톱 응용 프로그램에서 웹 응용 프로그램으로 변경 **은 해결해야하는 프로그래밍 문제 유형도 변경합니다. "디자인 패턴"책의 많은 패턴은 데스크탑 응용 프로그램과 관련이 있지만 웹 응용 프로그램과는 관련이 없습니다. 물론 단일 페이지 앱의 경우 이러한 패턴이 클라이언트 측에서 다시 관련 될 수 있습니다.
그러나 디자인 패턴과 "디자인 패턴"또는 "엔터프라이즈 응용 프로그램 아키텍처 패턴"과 같은 책은 초보자 프로그래머가되어 처음으로 새로운 유형의 문제에 직면 할 때 큰 가치가 있습니다. 처음으로 실행 취소 기능을 구현하라는 요청을 받았습니다. "디자인 패턴"책이 아니었다면, 각 구현은 각 상태 변경 작업 후 *** 데이터의 스냅 샷을 저장하는 것과 같았을 것입니다.
예, 패턴의 일부는 시간이 지남에 따라 관련성이 떨어지고 숙련 된 프로그래머가되면 그 패턴에 대해 덜 생각합니다. 그러나 초보자에게는 문제를 해결하는 수단이며 가능한 한 많이 사용하려는 탐구가 아니라는 것을 기억하는 한 초보자에게는 가치가 있습니다.
* 견적은 메모리에서 가져 오기 때문에 100 % 정확하지 않을 수 있습니다
** 내 경험상, 기업이 내부 업무용 응용 프로그램을위한 웹 전달 메커니즘을 선택하는 것이 매우 일반적입니다.
*** 함수형 프로그래밍과 함수형 데이터 구조를 배운 후에는 이것이 오늘날 해결하는 방식 일 수 있습니다.