Un algoritmo è un costrutto di codice che esegue un certo lavoro. Un modello di progettazione è un concetto o una regola di codifica che è una "best practice" riconosciuta da seguire nei casi in cui si applica, mentre si costruiscono algoritmi. Ognuno può essere la base dell'altro.
Facciamo un'analogia con l'architettura attuale. Gli architetti possono progettare case con forme e dimensioni praticamente illimitate. Possono incorporare idee estetiche o strutturali praticamente ovunque. Tuttavia, ci sono alcune regole e "migliori pratiche" che gli architetti dovrebbero seguire riguardo alla struttura dei loro progetti. Le porte devono avere un'altezza di almeno 7 piedi e una larghezza di almeno 30 "Ciò consente alle persone di attraversarle: la stufa e il frigorifero dovrebbero probabilmente trovarsi nella stessa stanza del forno, e non ci dovrebbero essere tappeti stanza, che chiamiamo la "cucina", alcuni modelli sono opzionali, un architetto può progettare un grande "concetto aperto" che incorpori spazi secondari progettati per vari usi, oppure l'architetto può separare tutti questi spazi con le pareti. è lo schema, non deve essere seguito, in quanto vi sono altri schemi che realizzeranno lo stesso obiettivo di fornire vari spazi, e non far collassare la casa o bruciarla.
Più specificamente, ci sono "schemi" di progettazione strutturale che dovrebbero seguire i carpentieri. I travetti del pavimento dovrebbero essere distanti 12 pollici e dovrebbero avere un rinforzo trasversale ogni quattro piedi. I pavimenti in aree che probabilmente hanno un sacco di contatto con l'acqua dovrebbero avere un underlayment impermeabile sotto un materiale superficiale tollerante all'acqua. Le piastrelle posate su un pavimento in legno dovrebbero avere una forma di supporto per ridurre al minimo il flex che causa screpolature. Le pareti dovrebbero avere borchie ogni 16 pollici. Le pareti che corrono perpendicolarmente ai travetti del soffitto sono "portanti" e dovrebbero avere doppie piastre superiori. Windows dovrebbe essere incorniciato con un'intestazione tra due borchie "re", con borchie aggiuntive "jack" all'interno delle borchie re che supportano l'intestazione da sotto. È certamente possibile inquadrare una finestra all'interno di un muro senza seguire queste regole, ma queste regole creano una cornice di finestra più solida che non si piegherà o affonderà nel muro nel tempo sotto il peso di tutti i materiali che il muro sostiene. Sono la "migliore pratica", e nel mondo reale sono richieste dalla legge per essere seguite nell'interesse della sicurezza strutturale. Queste sono regole che devi semplicemente seguire a livello di grana fine per costruire una solida casa. Altri sono opzionali, o "o-o": puoi "perforare i perni di un muro per pescare fili elettrici, oppure" puoi "invece far passare il filo attraverso e poi attraverso la piastra superiore del muro. Ci sono raccomandazioni e cose che sono più facili da fare in un caso piuttosto che in un altro, ma va bene se lo si desidera. Ci sono anche linee guida "minime": puoi "usare" un cavo elettrico da 12 o 14 g per un circuito da 120 V 15 A nella tua casa. Tuttavia, 230 V o 20 A + devono essere 12 g. Potresti, se lo avessi, usare 10g per tutto questo, ma potrebbe essere considerato un eccesso di ingegneria.
Quindi, nella nostra analogia, l'inquadratura "modello di progettazione" è la migliore pratica per creare un "algoritmo" di finestra che permetta alle persone di vedere dall'altra parte dell'algoritmo "muro" più grande che ha schemi simili per la sua costruzione, e supporta un pezzo del programma "casa", e lo divide anche in sottofunzioni "stanza" che seguono i propri schemi di progettazione e hanno algoritmi "piani" progettati per specifiche caratteristiche desiderabili.
La programmazione è molto simile sotto molti aspetti; ci sono alcune regole che i buoni sviluppatori seguono per creare codice robusto che può essere facilmente mantenuto (DRY, SOLID, YAGNI), che porta a note "migliori pratiche" per seguire tali regole (Strategia, Fabbrica, Scheda). Poi ci sono altre regole che creano algoritmi performanti che vengono altamente raccomandati, ma non sono richiesti SE sono soddisfatte determinate condizioni (questo SelectionSort vedrà solo liste di 10 elementi, quindi anche nel peggiore dei casi soddisferà le aspettative di performance). E infine, ci sono casi opzionali o "o-o" in cui più schemi seguiranno tutte le regole, e dipende da te che è più semplice (Strategia o Metodo modello per questo algoritmo ETL? Dipende da quanto è comune, e preferenza del programmatore )