Modelli di progettazione non OOP? [chiuso]

68

Ho solo sentito usare il termine "modello di progettazione" per il codice orientato agli oggetti e i modelli GoF includono solo schemi di progettazione OOP, ma i modelli di progettazione sono soluzioni eleganti per problemi di programmazione che si verificano comunemente, giusto? Non c'è nulla in là che dice che devono essere limitati a OOP, c'è?

Mi piacerebbe vedere alcuni esempi di schemi di progettazione al di fuori del regno della programmazione orientata agli oggetti. Hai qualche? Esiste anche un tale (nessun libro, come il libro GoF, deve essere stato scritto, deve essere usato, basta)?

Possono essere specifici per alcuni linguaggi di programmazione, ma sono preferiti i modelli generali (a livello di paradigma), di altri paradigmi rispetto a quelli orientati agli oggetti.

    
posta Anto 12.04.2011 - 22:24
fonte

10 risposte

10

In realtà è un paradosso: uno dei più popolari pattern Non-OO è ... "Class".

Poiché OO è stato inventato in linguaggi non OO, gli sviluppatori hanno dovuto simularlo (e lo stanno facendo anche adesso) - così è nato il modello. LISP e C sono esempi di questo.

Ma segui il mio consiglio: Non commettere errori comuni - non utilizzare modelli solo perché è bello , hai bisogno di seri motivi per giustificare l'uso del modello (almeno quelli OO).

Ad esempio, prendi il comando Comando, anche se è bello & disaccoppia il chiamante dal ricevitore, non dovrebbe essere usato a meno che tu non ne abbia effettivamente bisogno - perché le operazioni dovrebbero essere espresse usando i verbi - il che significa metodi. E usando i comandi tutto il posto in cui ti ritroverai con un gruppo di OO-lambdas completamente decentralizzati - > lo stesso sarebbe vero per un sacco di strategie.

    
risposta data 15.04.2011 - 07:21
fonte
10

"Design pattern" è in realtà un eufemismo per "soluzione". I modelli di design sono stati inventati per ovviare a carenze e difetti nelle lingue OO . Ad esempio, prendi il pattern iteratore che alla fine ha portato all'introduzione delle collezioni in Java. Groovy ha eliminato molti altri motivi convertendoli in funzioni linguistiche: non hai più bisogno del pattern di decoratore perché puoi aggiungere metodi a Groovy in classi esistenti.

Questo significa che puoi trovare schemi di design ovunque. In effetti ogni "buona pratica" può essere considerata una semplice forma di modello di progettazione.

    
risposta data 09.11.2011 - 09:15
fonte
9

LtU menziona che Jeremy Gibbons sta scrivendo un libro sugli schemi nella programmazione funzionale. Dai un'occhiata a Patterns in Functional Programming blog di Mr. Gibbon per alcuni teaser. Nota che raccomanda di leggere i suoi post dal più vecchio al più recente.

Il suo articolo Progetta modelli come programmi generici di tipo datatype di ordine superiore (pdf) modella in modo funzionale i modelli Gang of Four: Composite, Iterator, Visitor e Builder. Descrive i modelli di programmazione con equazioni ricorsive in Programmazione Origami (si piega e si apre).

    
risposta data 14.04.2011 - 16:47
fonte
8

Ci sono modelli di progettazione SQL .

Esistono anche alcuni modelli di design funzionali - vedi qui per scala.

    
risposta data 12.04.2011 - 22:36
fonte
6

Invece di nominare modelli di progettazione non-oo, vorrei darti alcuni esempi di libri con molti schemi di progettazione (in alcuni modelli saranno ancora specifici per OO):

Spero che questo aiuti

    
risposta data 12.04.2011 - 22:51
fonte
2

Nella programmazione funzionale (in particolare Haskell), ci sono molti schemi e idiomi che non si adattano molto bene a OOP. I tipi di fantasma sono un esempio ben noto e puoi trovare molto altro su haskell pagina wiki su Idioms .

    
risposta data 13.04.2011 - 12:29
fonte
1

La programmazione modulare è molto popolare per le librerie numeriche e le applicazioni matematiche (il software numerico è notoriamente difficile da modellare usando Modelli orientati agli oggetti, soprattutto perché c'è poco da incapsulare).

    
risposta data 15.04.2011 - 07:59
fonte
1

Un buon esempio di pattern non OOP è il mio catalogo di pattern preferiti in assoluto: Modelli organizzativi di sviluppo software agile, di James O. Coplien . Questo libro non riguarda schemi software, riguarda le persone, un catalogo per la creazione di team di successo. Ogni manager dovrebbe leggere questo libro!

    
risposta data 02.03.2012 - 15:11
fonte
0

Mi piace pensare a Data Strucutres come code, elenchi collegati, alberi, grafici, ecc. come modelli. Definiscono determinati modelli per archiviare i dati e elaborarli. Possono sembrare primitivi rispetto ai più alti schemi di Gang of Four, ma sono comunque modelli. Voglio dire, cosa succederebbe se qualcuno implementasse uno stack come FIFO invece di un LIFO e viceversa per una coda e li chiamasse altrimenti?

    
risposta data 13.04.2011 - 10:42
fonte

Leggi altre domande sui tag