Qual è la differenza tra questi due modelli, non in termini di intenti, perché chiaramente affrontano diversi problemi, ma in termini di implementazione.
Potresti dire, ad esempio, che l'interprete è un composito degenerato?
Cos'altro si può dire delle differenze?Modelli di design: qual è la differenza tra Interprete e Composito?
risposta
Il pattern dell'interprete ha poco a che fare con il pattern composito. Si potrebbe implementare parti di un interprete con un composito - per esempio, here un esempio è dato di un OrExpression
:
public class OrExpression extends Expression{
private Expression expression1 = null;
private Expression expression2 = null;
public OrExpression(Expression expression1, Expression expression2) {
this.expression1 = expression1;
this.expression2 = expression2;
}
public boolean interpret(String str) {
return expression1.interpret(str) || expression2.interpret(str);
}
}
Questo è un esempio del pattern Composite, dove il OrExpression
è composta di altri due espressioni e il risultato di ciascuna passata a una funzione booleana or
.
Generalmente, però, questo è solo una piccola parte di una possibile interprete - è più di un concetto di alto livello di una semplice composito e utilizzata solo nei domini di nicchia abbastanza (che hanno bisogno di interpretare stringhe arbitrarie, forse per allora eseguire comandi o rappresentare un insieme di regole)
Innanzitutto Interprete è comportamentale pattern e composito è strutturali. Quale esso stesso dice abbastanza di come dovresti considerare di usarli. I modelli di progettazione fondamentalmente strutturati riguardano le relazioni tra entità, rendendo più facile per queste entità lavorare insieme. D'altro canto, i modelli di progettazione comportamentale sono utilizzati nelle comunicazioni tra entità e rendono più semplice e flessibile la comunicazione tra queste entità.
Quindi la risposta alla tua prima domanda semplice è detto - No.
Aggiornamento: Ho trovato informazioni che possono essere useful to you here.
Gli schemi strutturali vengono utilizzati per definire le proprietà statiche del sistema (vedere lo schema delle classi).
Esempio: il modello di fabbrica può essere utilizzato per creare entità che costituiscono il sistema. È possibile avere il pulsante oggetto che ha proprietà grafiche diverse su Windows rispetto a OS X. Il modello di fabbrica creerà il pulsante indipendentemente dal sistema operativo e l'oggetto creato avrà le stesse interfacce su entrambi i sistemi operativi esporre lo stesso comportamento pur avendo interni diversi.
I modelli comportamentali sono utilizzati per definire il comportamento dinamico del sistema (vedere Diagrammi Attività, Sequenza ecc.).
Esempio: il pattern dell'adattatore può essere utilizzato in runtime per consentire l'interfacciamento di 2 entità che non condividono l'interfaccia tra di loro. Cambia in modo efficace il comportamento di un oggetto in fase di runtime.
Sono d'accordo con altre risposte.
Inoltre, sono modelli completamente diversi.Per quanto ricordo dalla classe;
Composito; usiamo questo modello per produrre elementi hierarchical
. Come un albero genealogico, ci sono elementi genitore e figlio, ma ogni persona ha un diverso attributes
con il fatto di essere attributo persona (base) ma il nostro focus su come si relazionano tra loro in questo schema.
Interprete: pensa questo modello come una specie di compiler
. Supponiamo che stiate implementando un motore di regole e valutate alcuni elementi usando gli elementi del linguaggio (segni) in un modo diverso. Ad esempio regular expressions
.
string item="1500$-240&DSCNT="; var out = item.Evaluate(); //output : 1500$-240$ = 1260$ We applied $240 discount by this text expression