SEARCH
You are in browse mode. You must login to use MEMORY

   Log in to start

level: patterns

Questions and Answers List

level questions: patterns

QuestionAnswer
quali sono i principali meta patterns?HookMethod: un “metodo astratto” che, implementato, determina il comportamento specifico nelle sottoclassi; è il punto caldo su cui interveniamo per adattare lo schema alla situazione. TemplateMethod: metodo che coordina generalmente più HookMethod per realizzare il design voluto; è l’elemento freddo di invariabilità del pattern che ne realizza la rigida struttura.
in quali modi hook methods e template methods possono interagire?- Unification: hook e template si trovano all'interno della stessa classe - Connection: esiste la classe contenente il template method che contiene a sua volta una o piu' classi che implementano gli hookmethods - Recursive connection: hook e template sono in classi separate, ma oltre all’aggregazione tali classi sono qui legate anche da una relazione di generalizzazione: la classe template dipende infatti dalla classe hook.
che cosa sono i singleton?sono un design pattern nell'ambito della programmazione che assicura che una determinata classe abbia una sola istanza e fornisce un punto di accesso globale a questa istanza. Questo significa che, all'interno di un'applicazione, ci sarà una sola istanza di una classe particolare, e questa istanza è accessibile da qualsiasi parte del codice. caratterizzati da: - costruttore privato o protected - unico metodo per l'ottenimento della istanza: getInstance - unico attributo : istanza statica del singleton
quali principi mira a rispettare il pattern strategy?il pattern strategy mira a rispettare i principi open close principle e single responsability poichè ogni classe appartenente alla interfaccia strategia avra un singolo scopo e facilmente si potranno avere diversi numeri di classi collegate
che cosa e' un idiom? un esempio?I pattern forniscono una rappresentazione astratta, quando si vuole implementare un pattern questo può assumere diverse forme in base al linguaggio che si utilizza, queste si chiamano idiom nel caso dei singleton in java viene utilizzata una soluzione alternativa in cui al posto di usare una classe per definire l’oggetto si usa un enumerativo con un unico valore, l’istanza. questo risolve i problemi di sincronizzazione che si presentavano con i singleton (thread safe)
che cosa prevede una interfaccia iterator?due metodi : - next () - hasnext () due metodi predefiniti : - remove () - forEachRemaining ()
il pattern chain of responsibility che cosa prevede?in poche parole: è un design pattern comportamentale che consente di creare una catena di oggetti, ognuno dei quali può gestire una richiesta, passarla all'oggetto successivo o ignorarla. In breve
che problemi risolve il flyweight pattern?aiuta a meglio gestire programmi che usano un grosso numero di oggetti che condividono porzioni di codice immutabili
quale strategia utilizza il flyweight pattern?> Divide gli oggetti in due parti principali: - Stati intrinseci: Questi sono gli attributi di un oggetto che sono condivisi tra molte istanze di oggetti simili. Gli stati intrinseci sono immutabili e solitamente memorizzati in strutture dati condivise. - Stati estrinseci: Questi sono gli attributi specifici di ciascuna istanza di oggetto e non possono essere condivisi. Gli stati estrinseci sono generalmente memorizzati nell'oggetto stesso. Usa una factory per creare e gestire oggetti flyweight. La factory determina se un oggetto con uno stato intrinseco specifico è già stato creato. In caso affermativo, lo restituisce; altrimenti, ne crea uno nuovo. > Utilizza un meccanismo di caching (cache) per memorizzare e riutilizzare gli oggetti flyweight creati in modo da evitare la creazione e la gestione eccessiva di oggetti. > Gli oggetti flyweight vengono resi immutabili, in modo che possano essere condivisi in modo sicuro tra diverse parti dell'applicazione.
quale e' la differenza fra pattern e idioma?il pattern e' l'idea di fondo di la risoluzione di un problema deve essere affrontata, l'idioma e' il modo in cui il pattern viene eseguito in uno specifico linguaggio e puo' subire modifiche in base ai vantaggi dei diversi linguaggi
che problema mira a risolvere il pattern observer?mira a risolvere il problema di stabilire una dipendenza uno-a-molti tra oggetti in modo che quando un oggetto cambia stato, tutti gli oggetti dipendenti da esso vengano notificati e aggiornati automaticamente
quale e' lo scopo del pattern adapterl'obiettivo del pattern adapter è quello di consentire a oggetti con interfacce incompatibili di lavorare insieme. In altre parole, mira a fare in modo che due interfacce non compatibili possano collaborare senza dover riscrivere il codice di uno o entrambi gli oggetti.
quali sono gli step dal pattern singleton a come viene implementato in java?in java i singleton vengono implementati tramite l'utilizzo degli enumerativi questo perchè nascono con la thread safeness altrimenti si dovrebbe utilizzare delle classi che facciano utilizzo della proprietà syncronized su alcune parti di codice il che le rendono particolarmente onerose in termini di computazione
quali sono le varie versioni del pattern observer?push: all'Observer viene passato lo stato completo del Subject - se lo stato e' molto grande allora potrebbe essere lunga l'operazione di passaggio pull: all'Observer viene notificato che e' avvenuta una modifica del Subject e lui tramite dei metodi getter specifici del Subject si va a prendere le informazioni che gli interessano - potrebbe richiedere piu' righe di codice per tutti i metodi getter ibrido: quando si conosce che il 90% degli Observer sara' interessato solo ad una informazione specifica allora si utilizzera' una notifica di tipo push, altrimenti si utilizzera' una notifica di tipo pull
che problema mira a risolvere il composite pattern?Il composite pattern mira a risolvere il problema di rappresentare una gerarchia di oggetti in modo che possano essere trattati allo stesso modo. per esempio in un FileSystem i File e le Directory possono avere operazioni comuni cosi magari per sapere la dimensione di una directory non c'e' bisogno di sapere se si sta trattando files o directories, su tutte verra' chiamato il metodo dimensione() previsto dall'interfaccia
quali criticita' presenta il composite pattern?nel caso si voglia distinguere gli oggetti trattati allora il composite pattern non ci viene in aiuto dato che si dovra' complicare il codice aggiungendo degli if per usare metodi specifici di un oggetto componente
Per che cosa viene usato il NullObject pattern?viene utilizzato quando l'utilizzo del null potrebbe portare ad ambiguità o interpretazioni sbagliate da parte del codice di fatti può simboleggiare: - un errore a runtime; - uno stato temporaneamente inconsistente; - un valore assente o non valido.
in cosa consiste il builder pattern?il pattern Builder permette di creare oggetti passo dopo passo, delegando la costruzione a una classe specifica chiamata "Builder". la classe Builder conterrà campi per ogni campo opzionale e un metodo per l'aggiunta di ciascun campo, infine conterrà un metodo per la costruzione. la classe da costruire farà una chiamata simile a: Car car = new CarBuilder() .colore(rosso) .cerchi( grigi) ..... .build()
quali sono le casistiche di utilizzo dell'Adapter pattern?Class Adapter: estende la classe esistente e implementa la interfaccia che si vuole raggiungere (consente di utilizzare i parametri privati) Object Adapter: ha nei suoi parametri l'oggetto a cui vuole fare implementare una interfaccia target (non puo accedere agli elementi privati)
a che cosa serve il pattern decorator? quali principi invoca?il pattern decorator è un pattern di progettazione strutturale che consente di aggiungere nuove funzionalità ad oggetti già esistenti senza alterarne la struttura. Questo viene realizzato costruendo una interfaccia decoratore che consente di creare oggetti che si wrappano fra loro e chiamano ognuno il metodo super invoca cosi il principio di single responsability
quali sono i vantaggi del pattern MVC?- Separazione delle responsabilità: il pattern MVC separa le responsabilità dell'applicazione in tre componenti distinti: modello, vista e controller. Ciò rende l'applicazione più modulare e facile da comprendere e mantenere. - Riutilizzo delle viste: le viste sono indipendenti dal modello e dal controller, quindi possono essere riutilizzate in diverse applicazioni. - Facilità di test: il pattern MVC rende più facile il test delle viste, del modello e del controller separatamente.
quali sono gli svantaggi del pattern MVC?Dipendenza circolare: il pattern MVC introduce una dipendenza circolare tra le tre componenti. Ciò può rendere difficile lo sviluppo e il testing dell'applicazione. Aumento della complessità: il pattern MVC può aumentare la complessità dell'applicazione, in particolare se l'applicazione è grande o complessa.
quali sono i pattern usati all'interno del pattern MVC?Observer: le viste sono observer del modello. Ciò consente al modello di notificare le modifiche di stato alle viste. Strategy: i controller sono strategy per le viste. Ciò consente di gestire le viste in modo diverso semplicemente cambiando il controller ad esse associato. Composite: le viste sono spesso composte da più componenti. Il pattern Composite può essere usato per implementare questa funzionalità.
che cosa prevede il factory design pattern? quale differenza c'è con il builder pattern?il pattern Factory permette di creare oggetti senza specificare la loro classe concreta, delegando la creazione a una classe specifica chiamata "Factory" La differenza con il builder pattern è che questo punta a facilitare la creazione di oggetti complessi mentre la factory punta a costruire oggetti senza specificare la loro classe concreta
quali sono gli scenari di utilizzo in cui il pattern MVC è consigliabile?Il pattern MVC è adatto a scenari in cui è necessario separare le responsabilità dell'applicazione in tre componenti distinti: modello, vista e controller. Il pattern MVC è particolarmente adatto a applicazioni web, in cui è importante che l'interfaccia utente sia indipendente dai dati. - applicazioni web - applicazioni desktop - applicazioni mobile
quali sono le differenze tra il pattern MVC e il pattern Model-View-Presenter (MVP)?- Ruolo del controller: MVC -> il controller è responsabile della gestione delle interazioni con l'utente e dell'aggiornamento del modello. MVP -> il controller è responsabile solo della gestione delle interazioni con l'utente. L'aggiornamento del modello è invece responsabilità del presenter. - Dipendenza tra viste e modello: MVC, le viste dipendono direttamente dal modello. MVP, le viste non dipendono direttamente dal modello. La dipendenza tra viste e modello è mediata dal presenter. - Testing: MVP facilita il testing delle viste. In particolare, non è necessario simulare l'interazione dell'utente per testare le viste. È sufficiente verificare che il presenter aggiorni correttamente la vista quando riceve un aggiornamento dal modello.
quali sono i vantaggi del pattern MVP?Facilità di test: come già detto, il pattern MVP facilita il testing delle viste. Riduzione della complessità: il pattern MVP riduce la complessità dell'applicazione, in particolare la complessità delle viste. Separazione delle responsabilità: il pattern MVP separa le responsabilità dell'applicazione in tre componenti distinti: modello, presenter e vista. Ciò rende l'applicazione più modulare e facile da comprendere e mantenere.
quali sono gli svantaggi del pattern MVP?Aumento della complessità: il pattern MVP può aumentare la complessità dell'applicazione, in particolare se l'applicazione è grande o complessa. Dipendenza circolare: il pattern MVP introduce una dipendenza circolare tra il presenter e la vista. Ciò può rendere difficile lo sviluppo e il testing dell'applicazione.
quali sono gli scenari in cui il pattern MVP è più adatto?Il pattern MVP è adatto a scenari in cui è necessario facilitare il testing delle viste. Il pattern MVP è particolarmente adatto a applicazioni web, in cui è importante che le viste siano indipendenti dai dati.
quali sono le precauzioni da prendere quando si utilizza il pattern MVP?Evitare le escaping reference: le escaping reference sono riferimenti che vengono passati dal presenter alla vista e che possono essere utilizzati dalla vista per accedere alla rappresentazione interna del modello. L'utilizzo di escaping reference può violare la separazione delle responsabilità tra modello e presenter. Mantenere il codice del presenter semplice: il codice del presenter deve essere il più semplice possibile. Ciò renderà più facile il testing del presenter.