Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:design-patterns-part-one [2025/11/24 10:58]
florian_luis.micu [Dezavantaje]
poo-ca-cd:laboratoare:design-patterns-part-one [2025/11/24 11:05] (current)
florian_luis.micu [Single Dispatch]
Line 690: Line 690:
 </​code>​ </​code>​
  
-Însă această soluție permite **un singur comportament de afișare** per clasă. Dacă vrem să afișăm același obiect în mai multe formate (TEXT, JSON, XML), nu putem suprascrie ​`show()de trei ori. Ar trebui să delegăm afișarea către clase externe (''​ExporterText'',​ ''​ExporterJson'',​ ''​ExporterXml''​),​ iar dacă folosim overloading pentru acestea, revenim la aceeași problemă: **overloading-ul se decide la compile-time**,​ ignorând tipul real al obiectului.+Însă această soluție permite **un singur comportament de afișare** per clasă. Dacă vrem să afișăm același obiect în mai multe formate (TEXT, JSON, XML), nu putem suprascrie ​''​show()'' ​de trei ori. Ar trebui să delegăm afișarea către clase externe (''​ExporterText'',​ ''​ExporterJson'',​ ''​ExporterXml''​),​ iar dacă folosim overloading pentru acestea, revenim la aceeași problemă: **overloading-ul se decide la compile-time**,​ ignorând tipul real al obiectului.
 </​note>​ </​note>​
  
Line 733: Line 733:
  
 <note tip> <note tip>
-Aceasta este situația clasică unde single dispatch și overloading nu sunt suficiente. Avem nevoie de double dispatch.+Aceasta este situația clasică unde **single dispatch și overloading nu sunt suficiente**. Avem nevoie de **double dispatch**.
 </​note>​ </​note>​
  
Line 843: Line 843:
   - Dorim să separăm algoritmii de structura de date, păstrând clasele vizitabile simple.   - Dorim să separăm algoritmii de structura de date, păstrând clasele vizitabile simple.
  
-Pe scurt: Folosim Visitor când vrem să avem **mai mulți algoritmi** (ex. ExporterPDF,​ ExporterXML,​ ExporterJSON) pentru **mai multe tipuri de entități** (ex. SeightSeeing,​ Industry, City).+**TL;DR:** Folosim Visitor când vrem să avem **mai mulți algoritmi** (ex. ExporterPDF,​ ExporterXML,​ ExporterJSON) pentru **mai multe tipuri de entități** (ex. SeightSeeing,​ Industry, City).
 </​note>​ </​note>​
  
poo-ca-cd/laboratoare/design-patterns-part-one.1763974694.txt.gz · Last modified: 2025/11/24 10:58 by florian_luis.micu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0