Perché il modello di progettazione non viene nominato come modello di implementazione?

0

Trovo che la maggior parte degli schemi di progettazione riguardi l'implementazione di un modello come mvc, o come modificare l'implementazione con costi inferiori. Questi sono tutti accaduti nella fase di implementazione di un software. Quindi perché non chiamarli modelli di implementazione?

    
posta upton 01.06.2012 - 15:30
fonte

4 risposte

5

I find that most of the design patterns are concerned with implementation of a model like mvc, or how to change the implementation with less cost.

Il design ha ovviamente un grande impatto sull'implementazione, dopotutto ogni progetto deve essere implementato. Ma i modelli di progettazione riguardano fondamentalmente il design , non l'implementazione. Qualsiasi modello di progettazione dato può essere implementato in più di un modo, ma il concetto rimane lo stesso. Per fare un ulteriore passo avanti, se hai un progetto che utilizza un modello di progettazione, dovresti essere in grado di sostituire l'implementazione di quel modello nel progetto con uno diverso, e farlo non dovrebbe causare grossi cambiamenti nel modo in cui gli oggetti si riferiscono l'un l'altro.

Se un pattern come MVC era un modello di implementazione , qualsiasi progetto che utilizza MVC implementerebbe tale pattern sostanzialmente nello stesso modo. Cioè, il codice sembrerebbe più o meno lo stesso. Ci sono un sacco di framework MVC là fuori, e puoi scommettere che non tutti condividono la stessa implementazione. Tuttavia, se hai lavorato con qualcuno di loro, ti sarà facile capire gli altri a livello concettuale perché condividono lo stesso design .

    
risposta data 01.06.2012 - 16:16
fonte
5

Direi che quella che in genere è conosciuta come 'fase di implementazione del software' è una fase di progettazione , forse una progettazione dettagliata di basso livello, ma non per questo meno progettata. La vera "implementazione" è in un certo senso eseguita da compilatori e crea script e quindi automatizzati e invisibili.

Naturalmente perché in origine si chiamavano modelli di progettazione perché provenivano dall'architettura (tipo mattoni e malta) che è certamente una fase di progettazione piuttosto che di implementazione. I modelli di progettazione del software erano un'analogia con i modelli di progettazione architettonica

    
risposta data 01.06.2012 - 15:42
fonte
1

Un modello di design è un concetto che è più di alto livello. Il modo in cui implementi questi modelli dipende da te ed è più a basso livello, cose interne al design.

Sono un concetto generale che tende a nascondere i dettagli di implementazione, quindi il nome design modello.

Quando parli di change the implementation with less cost , si tratta di un effetto collaterale diretto dell'uso del modello di progettazione. Hai tutti i dettagli di implementazione incapsulati, quindi puoi cambiarli a piacimento senza influire sui client delle tue classi.

These are all happened in the implementation phase of a software.

Questo non è necessariamente vero, perché gli schemi di progettazione potrebbero essere individuati nella fase di progettazione. Sono d'accordo con te sul fatto che non dovresti forzare i design pattern nel tuo design, che dovrebbero apparire da soli, ma è una possibilità che compaiano a livello di design, molto prima che tu debba preoccuparti dell'implementazione concreta.

    
risposta data 01.06.2012 - 15:39
fonte
1

Perché contano gli aspetti a livello di progettazione, non gli aspetti a livello di implementazione.

Prendi, ad esempio, il modello di fabbrica.

Il concetto chiave è che tu fornisci un punto di accesso centrale per produrre in modo trasparente varie istanze di un tipo di dati astratto, con l'obiettivo di esporre solo la fabbrica e l'ADT, ma non le stesse implementazioni.

La factory può essere una classe, un metodo statico o una funzione libera e l'ADT che essa crea può essere restituita dall'interfaccia, dalla classe base o dallo stile di programmazione dinamica, come un tipo non specificato (ma documentato per contenere alcuni membri). Le fabbriche possono essere utilizzate per creare istanze di dati puri, classiche classi data-con-codice, classi che si limitano a racchiudere un metodo o anche solo funzioni (lambda, puntatori di funzione o qualsiasi meccanismo fornito dal linguaggio). Questi sono i dettagli di implementazione , mentre il principio design rimane lo stesso: fai astrarre un tipo di dati polimorfico fornendo solo un'interfaccia comune e un meccanismo factory per creare istanze in modo trasparente.

    
risposta data 01.06.2012 - 16:29
fonte

Leggi altre domande sui tag