Differenza tra Pattern e Principle

18

Qual è la differenza tra modelli e principi di progettazione orientata agli oggetti? Sono cose diverse? Per quanto ho capito, entrambi cercano di raggiungere un obiettivo comune (e, per esempio, la flessibilità). Quindi posso dire che uno schema è un principio e viceversa?

Principio di progettazione = SOLID (cioè principio di inversione delle dipendenze)

Motivo di disegno = Gof (cioè Pattern di fabbrica astratto)

    
posta Chandi Gorom 20.06.2012 - 11:55
fonte

7 risposte

22

No, non sono uguali.

I pattern sono soluzioni comuni ai problemi di programmazione orientata agli oggetti . (Non sono a conoscenza di libri simili per programmazione funzionale o dichiarativa). L'idea è stata cristallizzata nel famoso libro "Design Patterns" della Gang of Four nel 1995.

Come osserva Andre, i modelli sono comuni in ogni paradigma. Ripeterò la mia precedente affermazione: non sono non a conoscenza di libri simili per programmazione funzionale o dichiarativa, ma Andre ha rimediato alla mia ignoranza con il link che ha fornito di seguito. (Grazie, Andre.)

I principi riguardano meno particolari linguaggi o paradigmi, più generali. "Non ripeti te stesso" - Principio ASCIUTTO - è vero per tutte le programmazioni.

    
risposta data 20.06.2012 - 11:59
fonte
18

Questi concetti non sono gli stessi:

* Principi di progettazione: * I principi di progettazione del software rappresentano un insieme di linee guida che ci aiutano ad evitare di avere un design scadente. come: Apri Close Principle

* Motivo di progettazione: * un modello di progettazione è una soluzione generale riutilizzabile per un problema che si verifica comunemente in un dato contesto nella progettazione del software. Come: Singleton

    
risposta data 20.06.2012 - 12:03
fonte
7

I pattern sono per principi, quali implementazioni sono per i pattern.

Un principio sarebbe "indiretto", che potrebbe essere realizzato con un modello "factory", che alla fine viene implementato come una classe con metodi factory.

    
risposta data 20.06.2012 - 15:29
fonte
3

Bene, i principi sono regole mentre i modelli sono i loro esempi concreti.

    
risposta data 20.06.2012 - 11:59
fonte
3

I pattern sono più cose di alto livello che principi. I modelli risolvono problemi specifici. I principi potrebbero essere applicati ovunque indipendentemente dal contesto. In realtà modelli basati su principi (SRP, DRY, ecc.)

es. Diamo un'occhiata al modello di strategia. Definisce una famiglia di algoritmi, incapsula ciascuno e li rende intercambiabili. Quindi, hai qui il concetto di alto livello dell'algoritmo. Con lo schema State avete un concetto di stato ad alto livello. Con i principi non hai concetti di alto livello. I principi sono elementi costitutivi, usati dai picchietti per raggiungere l'obiettivo. Quando si implementa il modello di strategia, si utilizza SOLID:

  • SRP: definisci il codice, che è responsabile dell'algoritmo e lo estrae da un altro codice.
  • OCP: definisci l'astrazione, che rappresenta tutti i diversi algoritmi e la usa
  • LSP: non si utilizzano classi di algoritmi concreti nel codice client, solo astrazione
risposta data 20.06.2012 - 11:57
fonte
1

OO Design Principle -

Il principio OO è un insieme di linee guida che garantisce il concetto di OOP. Basato sul concetto OOP, definisce i modi per progettare un modo migliore, un design migliore. Il principio di base della progettazione OO è SOLIDO.

Un modello di progettazione fornisce una soluzione generale a un problema di progettazione. Si noti che il "motivo di progettazione" può essere applicato anche alla parola orientata agli oggetti di mezzogiorno. Quindi i modelli di progettazione OO (OODP) sono quelli che forniscono una soluzione generale al principio OO basato sulla progettazione orientata agli oggetti. I modelli di progettazione sono scoperti, non inventati. Esistono diversi modi per definire gli OODP e il più famoso è BSC [Behavioral Structural Creational].

Di seguito è riportato il link per una spiegazione dettagliata. link

    
risposta data 20.01.2013 - 23:11
fonte
1

Modelli originariamente documentati per l'architettura. In architettura, si applicano a cose che vanno dal posizionamento della porta in una stanza alla disposizione di un villaggio.

La Gang of Four ha applicato l'idea alla programmazione orientata agli oggetti. Ci possono essere più di un modello che può essere usato per risolvere un problema, ma ogni modello avrà un'implementazione specifica. I pattern esistono in altri approcci di programmazione, ma non sono a conoscenza di libri applicabili. Come altri hanno già menzionato, i Pattern coprono implementazioni specifiche. L'utilizzo di un pattern quando non è applicato è spesso considerato un anti-pattern.

I principi non coprono l'implementazione, sebbene possano esserci approcci di implementazione standard. I principi riguardano più le questioni generali piuttosto che i problemi specifici. Per Inversion of Control, sono a conoscenza di almeno tre approcci di implementazione. Per DRY (Do not Repeat Yourself) Non conosco un approccio specifico di implementazione specifico, anche se ne uso diversi.

Si consideri

  • Ti è stato richiesto di usare un Pattern come Abstract Factory Pattern come unico approccio per sviluppare un programma. Sarebbe appropriato? No, allora è più probabile un Pattern.
  • Ti è stato richiesto di applicare DRY a tutti i componenti? Sarebbe appropriato? Sì, allora è più probabile che sia un Principio.
risposta data 20.06.2012 - 15:28
fonte

Leggi altre domande sui tag