{"id":218,"date":"2014-06-19T23:39:34","date_gmt":"2014-06-19T21:39:34","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=218"},"modified":"2014-06-19T23:39:34","modified_gmt":"2014-06-19T21:39:34","slug":"design-pattern-tutorial-1-introduzione","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/design-pattern-tutorial-1-introduzione\/","title":{"rendered":"DESIGN PATTERN TUTORIAL &#8211; 1 &#8211; INTRODUZIONE"},"content":{"rendered":"<p style=\"color: #0d293f;\">Inizia una serie di articoli dedicati ai principali design pattern della programmazione ad oggetti.<\/p>\n<p style=\"color: #0d293f;\">La prima cosa da fare \u00e8 chiarire cos&#8217;\u00e8 un pattern. Per pattern si intende un metodo preciso di svolgere un determinato lavoro, frutto dell&#8217;esperienza maturata. Esso, pertanto, costitusce un modo per risolvere un determinato problema, ma non \u00e8 l&#8217;unico e star\u00e0 al programmatore scegliere di volta in volta se affidarsi ad un pattern o ad una soluzione differente. Si tratta di valutare di volta in volta il grado di complessit\u00e0 della soluzione e scegliere la strada migliore.<\/p>\n<p style=\"color: #0d293f;\">In questo primo articolo vedremo una carrellata dei principali design pattern, che approfondiremo di volta in volta in articoli dedicati.<\/p>\n<p style=\"color: #0d293f;\"><strong>Adapter<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando occorre adattare il nostro codice alle esigenze di un client, fuori dal nostro controllo.<\/p>\n<p style=\"color: #0d293f;\"><strong>Facade<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole una interfaccia di alto livello che nasconde la complessit\u00e0 del sottosistema cui si appoggia.<\/p>\n<p style=\"color: #0d293f;\"><strong>Composite<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando occorre modellare oggetti in cui alcuni elementi possono contenere gruppi di oggetti. Un tipico esempio \u00e8 l&#8217;albero.<\/p>\n<p style=\"color: #0d293f;\"><strong>Bridge<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole disaccoppiare una astrazione dalla sua implementazione. Un tipico esempio sono i driver.<\/p>\n<p style=\"color: #0d293f;\"><strong>Singleton<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole che una classe abbia una sola istanza e un solo punto di accesso ad essa.<\/p>\n<p style=\"color: #0d293f;\"><strong>Observer<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato per gestire il caso in cui pi\u00f9 oggetti dipendono dal comportamento di uno specifico oggetto.<\/p>\n<p style=\"color: #0d293f;\"><strong>Mediator<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole centralizzare le regole di interazione tra un gruppo di oggetti.<\/p>\n<p style=\"color: #0d293f;\"><strong>Proxy<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole demandare ad un altro oggetto l&#8217;accesso alle proprie funzionalit\u00e0.<\/p>\n<p style=\"color: #0d293f;\"><strong>Chain Of Responsability<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole consentire a pi\u00f9 oggetti di gestire una chiamata in sequenza, ognuno responsabile di una determinata azione<\/p>\n<p style=\"color: #0d293f;\"><strong>Builder<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole spostare la logica della costruzione della classe al di fuori della classe stessa.<\/p>\n<p style=\"color: #0d293f;\"><strong>Abstract Factory<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si consente ad un client di poter istanziare oggetti che fanno parte di una famiglia di classi correllate<\/p>\n<p style=\"color: #0d293f;\"><strong>Prototype<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si istanzia un nuovo oggetto a partire da una gi\u00e0 presente<\/p>\n<p style=\"color: #0d293f;\"><strong>Template Method<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si rimanda la definizione di un algoritmo ad una sottoclasse. Tipico esempio \u00e8 l&#8217;interfaccia Comparator.<\/p>\n<p style=\"color: #0d293f;\"><strong>State<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si \u00e8 in presenza di una logica a stati e la si distribuisce su pi\u00f9 classi.<\/p>\n<p style=\"color: #0d293f;\"><strong>Command<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si incapsula una richiesta all&#8217;interno di un oggetto, che sar\u00e0 invocabile da un client. Tipico esempio sono i men\u00f9.<\/p>\n<p style=\"color: #0d293f;\"><strong>Decorator<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole estendere il comportamento di un oggetto esistente.<\/p>\n<p style=\"color: #0d293f;\"><strong>Iterator<\/strong><\/p>\n<p style=\"color: #0d293f;\">Viene usato quando si vuole consentire ad un client di accedere sequenzialmente agli elementi di una collezione.<\/p>\n<p style=\"color: #0d293f;\">Alla prossima<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inizia una serie di articoli dedicati ai principali design pattern della programmazione ad oggetti. La prima cosa da fare \u00e8 chiarire cos&#8217;\u00e8 un pattern. Per pattern si intende un metodo preciso di svolgere un determinato lavoro, frutto dell&#8217;esperienza maturata. Esso, pertanto, costitusce un modo per risolvere un determinato problema, ma non \u00e8 l&#8217;unico e star\u00e0 &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/design-pattern-tutorial-1-introduzione\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">DESIGN PATTERN TUTORIAL &#8211; 1 &#8211; INTRODUZIONE<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40],"tags":[41],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/218"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=218"}],"version-history":[{"count":1,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/218\/revisions"}],"predecessor-version":[{"id":219,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/218\/revisions\/219"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=218"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}