여기에는 세 가지 요소가 있다고 생각합니다.
중요한 질량의 부족
첫째, 패턴은 기본적으로 특정 "청크"기능을 구현하는 일부 코드에 이름을 지정하는 것 이상입니다. 이름이 실제 가치를 제공하는 유일한 방법은 이름 을 사용하여 이름의 의미를 아는 모든 사람에게 의존 할 수 있다면 코드를 즉시 이해하는 것입니다.
패턴은 그것을 달성하는 데 필요한 임계 질량을 설정하지 않았습니다. 오히려 AAMOF와 반대입니다. GoF 책이 나온지 20 년이 지난 지금, 관련된 모든 사람들이 의사 소통을 향상시키기 위해 충분한 디자인 패턴을 알고있는 수십 개의 대화를 보지 못했을 것입니다.
좀 더 기묘하게 말하면 디자인 패턴은 실패했기 때문에 실패했습니다.
너무 많은 패턴
두 번째 주요 요소는 처음에는 너무 많은 패턴의 이름을 짓는 것입니다. 상당히 많은 경우에, 패턴들 사이의 차이는 미묘하여 특정 클래스가 하나의 패턴에 맞는지 (또는 어쩌면 둘 다 또는 아마도 둘 다) 실제로 확실하게 말할 수없는 것입니다.
의도는 코드에 대해 더 높은 수준으로 이야기 할 수 있다는 것입니다. 특정 패턴의 구현으로 상당히 큰 코드 덩어리에 레이블을 지정할 수 있습니다. 미리 정의 된 이름을 사용하기 만하면 듣는 모든 사람이 일반적으로 해당 코드에 관심이있는만큼 많은 정보를 알고 있으므로 다음 단계로 넘어갈 수 있습니다.
현실은 거의 반대되는 경향이 있습니다. 회의 중이라고 말하고이 특정 수업이 Facade라고 말하십시오. 회의에 참석 한 사람들의 절반은 그 의미를 정확히 잊었거나 오랫동안 잊어 버린 적이 있습니다. 그들 중 하나는 파사드와 프록시 사이의 정확한 차이점을 상기시켜달라고 요청합니다. 아, 그리고 패턴을 실제로 아는 두 사람은 회의의 나머지 부분에서 이것이 실제로 Façade로 간주되어야하는지 아니면 "어댑터"로 간주되어야하는지에 대해 토론합니다.
"이 코드는별로 흥미롭지 않고 계속 진행해 보자"라는 의도만으로 가치가 아니라 패턴 만 추가 된 산만 함을 사용하려고합니다.
관심 부족
대부분의 디자인 패턴은 실제로 흥미로운 코드 부분을 다루지 않습니다. 그들은 "어떻게이 오브젝트를 작성합니까?", "어떻게이 오브젝트가 그 오브젝트와 대화하도록합니까?"와 같은 것을 처리합니다. 이것에 대한 패턴 이름을 기억하는 것은 (세부 사항에 대한 전술 한 주장뿐만 아니라) 대부분의 프로그래머가 신경 쓰지 않는 것에 많은 에너지를 넣는 것입니다.
약간 다르게 말하자면 패턴은 많은 프로그램들 사이에서 동일한 것을 처리하지만 실제로 프로그램을 흥미롭게 만드는 것은 다른 프로그램 과 어떻게 다른가 입니다.
요약
다음과 같은 이유로 디자인 패턴이 실패했습니다.
- 그들은 임계 질량을 달성하지 못했습니다.
- 명확성을 보장하기 위해 패턴 간의 구별이 불충분했습니다.
- 그들은 어쨌든 거의 아무도 신경 쓰지 않은 코드 부분을 처리했습니다.