Che cos'è un design pattern? Una soluzione comune a un problema di progettazione ricorrente. Cosa rappresentano i bloaters? Codice sproporzionato come long method, large class, long parameter list. Per cosa sta GOF? Gang of Four Che cosa sono gli object orientation abusers? L'uso sbagliato dell'object oriented come lo switch statement e refused bequest. Quanti pattern GOF ci sono in totale? 23 Cosa significano i change preventers? Parti troppo accoppiate che impediscono le modifiche, ad esempio shotgun surgery. Quali sono i due assi di classificazione dei design pattern? Scopo e raggio d'azione. Quali sono gli dispensables? Cose che è meglio togliere come duplicated code e data class. Cosa significa un pattern creazionale su classi? Un pattern che si occupa della creazione di oggetti in modo da isolare la logica di creazione dal codice client. Cosa è un long method? Un metodo con troppe righe che dovrebbe essere diviso in metodi separati. Qual è il problema risolto dallo strategy pattern? Un insieme di algoritmi correlati e variabili che vogliamo poter cambiare a runtime. Che cosa significa refused bequest? La sottoclasse non usa quello che eredita, quindi la gerarchia è sbagliata. Come si risolve il problema dello strategy pattern? Ogni algoritmo viene messo in una classe separata, tutte con un'interfaccia comune. Il context tiene un riferimento alla strategia e la usa senza sapere quale sia. Cosa rappresenta shotgun surgery? Per una modifica piccola devi toccare tante classi diverse creando problemi di modifiche e rischi di errori non immediatamente evidenti. Qual è la distinzione tra strategy e observer pattern? Lo strategy serve a scambiare un comportamento, mentre observer serve a notificare un cambiamento a più interessati. Che cosa sono le data class? Classi che sono solo contenitori di dati ma senza logica. Cosa risolve l'adapter pattern? Un'incompatibilità tra due interfacce incompatibili che però hanno bisogno di parlarsi. Cosa è il feature envy? Un metodo usa più i dati di un altro oggetto che i propri. Qual è la differenza tra adapter e facade pattern? L'adapter converte un'interfaccia che c'è già, mentre facade semplifica l'accesso a un insieme di cose. Come si risolve il switch statement? Sfruttare il polimorfismo con replace conditional with polymorphism.