Penso che ci siano tre fattori che entrano in gioco qui.
Mancanza di massa critica
In primo luogo, un modello è sostanzialmente poco più che dare un nome ad un codice che implementa un particolare "pezzo" di funzionalità. L'unico modo in cui quel nome fornisce molto valore reale è se puoi dipendere da chiunque sappia cosa significa il nome, quindi solo usando il nome, capiscono immediatamente molto sul codice.
I modelli non hanno mai stabilito la massa critica di cui avevano bisogno per raggiungere questo obiettivo. Piuttosto il contrario, AAMOF. In 20 (circa) anni dalla pubblicazione del libro GoF, sono abbastanza sicuro di non aver visto più di una dozzina di conversazioni in cui tutte le persone coinvolte conoscevano davvero abbastanza schemi di progettazione da utilizzare per migliorare la comunicazione.
Per dirla in modo un po 'più caratteristico: i modelli di design sono falliti proprio perché hanno fallito.
Troppi modelli
Penso che il secondo fattore principale sia che, semmai, hanno inizialmente nominato troppi schemi. In un discreto numero di casi, le differenze tra i modelli sono sufficientemente sottili che è quasi impossibile dire con certezza reale se una determinata classe si adatta a un modello o a un altro (o forse entrambi - o forse nessuno dei due).
L'intento era che avresti potuto parlare di codice a un livello superiore. Saresti in grado di etichettare una parte abbastanza grande di codice come l'implementazione di un modello particolare. Semplicemente usando quel nome predefinito, tutti gli ascoltatori di solito saprebbero tanto quanto hanno a cuore quel codice, in modo da poter passare alla cosa successiva.
La realtà tende ad essere quasi l'opposto. Diciamo che sei in riunione e di 'loro che questa particolare classe è una facciata. Metà delle persone presenti all'incontro o non hanno mai saputo o da tempo hanno dimenticato esattamente cosa significa. Uno di loro ti chiede di ricordargli le differenze esatte tra una facciata e, diciamo, un proxy. Oh, e la coppia di persone che conoscono davvero i modelli passa il resto della riunione a discutere se questa debba davvero essere considerata una facciata o "solo" un adattatore (con quel ragazzo che insiste ancora che gli sembra un proxy).
Dato che il tuo intento era proprio quello di dire: "questo codice non è molto interessante; andiamo avanti", cercando di usare il nome di un modello solo aggiunto distrazione, non valore.
Mancanza di interesse
La maggior parte dei modelli di progettazione non si occupa davvero delle parti interessanti del codice. Hanno a che fare con cose del tipo: "come faccio a creare questi oggetti?" E "come faccio a far dialogare questo oggetto con quello?" Memorizzare i nomi dei modelli per questi (così come gli argomenti di cui sopra sui dettagli e simili) sta semplicemente mettendo molta energia in cose a cui la maggior parte dei programmatori non si preoccupa molto.
Per dirla in modo leggermente diverso: i modelli affrontano le cose che sono le stesse tra molti programmi - ma ciò che rende davvero interessante un programma è come è diverso dagli altri programmi.
Sommario
I modelli di progettazione non sono riusciti perché:
- Non sono riusciti a raggiungere la massa critica.
- La differenziazione tra i modelli era insufficiente per garantire chiarezza.
- Si occupavano per lo più di parti di codice, quasi a nessuno importava comunque a nessuno.