Changes between Version 15 and Version 16 of Variante1


Ignore:
Timestamp:
Jul 27, 2006, 5:31:27 PM (18 years ago)
Author:
gnappo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Variante1

    v15 v16  
    44La nostra `Clone()` e' superficiale, perche' dovrebbe essere soddisfacente per la maggior parte dei clienti, e perche' permette un certo risparmio di memoria. Da menzionarsi in documentazione.
    55
    6 20060724-1715 [[BR]]
     620060724-1715 gnappo & roma[[BR]]
    77In realta' implementare la `Clone()` per i prodotti base non e' necessario giacche' la factory istanzia gia' in maniera corretta tali prodotti. Tale funzione diventa invece _indispensabile_ per chi vuole aggiungere nuovi prodotti a run-time per una successiva creazione.
    88
    9 20060725-1559 [[BR]]
     920060725-1559 gnappo[[BR]]
    1010Nota minore:Si potrebbero tipizzare le liste di espressioni attualmente campi di istanza di alcune !SchemeExpression (e.g. !SchemeExpressionAnd). In tal modo non avremmo necessita' di cast (generici docet). [[BR]]
    1111Tutte le SchemeExpression<Value> potrebbero avere come campo d'istanza lo scheme value associato (da istanziarsi al momento della creazione dell'espressione) anziche il valore come tipo primitivo. Attualmente gli scheme-value vengono creati solo al momento della valutazione. Se fossero creati subito il metodo prettyPrint potrebbe semplicemente riutilizzare il metodo toString insito negli scheme-valori. La soluzione e' piu' elegante anche se richiede un consumo di memoria leggermente maggiore. (<-la proposta e' stata implementata)[[BR]]
    1212Nello scrivere la prettyPrint ci si accorge dell'esigenza di poter stampare !SchemeBranch e !SchemeDefinition in quanto contenute in altre !SchemeExpression. Le soluzioni percorribili sono dunque due: la prima e' rendere !SchemeExpression sia i branch che le definition, la seconda esporre dei getter specifici che ritornano espressioni (trattasi di aggiramento, !SchemeBranch gia' li offre). A mio parere la prima implica uno snaturamento di cio' che e' espressione quindi percorrero' la seconda strada.
    1313
    14 20060726-1652 [[BR]]
     1420060726-1652 gnappo[[BR]]
    1515In un passo delle specifiche riguardanti variante 1 si fa riferimento alla configurazione dei prodotti durante la costruzione. A tal proposito sorge un dubbio riguardo ai prototipi: come favoriamo la configurazione dei prototipi? Attualmente vengono passati degli argomenti al metodo create della prototype factory ma essi vengono ignorati in quanto tale metodo ritorna semplicemente un clone (di piu' non puo' essere fatto visto che non possiamo conoscere come i prodotti futuri dovranno essere configurati). A questo punto in documentazione andrebbe aggiunto: "![...] qualora il cliente prevedesse una fase di configurazione durante la creazione di un prodotto, dovra' egli stesso ridefinire una !PrototypeFactory in cui il metodo create assolva a tale compito".
     16
     1720060727-1725 gnappo[[BR]]
     18Ho creato la classe !SchemeExpressionAbstract: di default solleva eccezione per tutti i metodi previsti nell'interfaccia !SchemeExpression. In questo modo chi tentera' di utilizzare la clone sui prodotti di base rimarra' inc***to (UAHAHAHAHA)... Scherzi a parte, potrebbe essere utile per definire altri comportamenti di default (non so ancora per cosa). Ovviamente ora tutte le !SchemeExpression di base ereditano da tale classe.
    1619
    1720=== Prodotti aggiunti ===