Sunt pe deplin de acord cu Orion Edwards și, de obicei, modul în care abordez problema; dar în ultima vreme am început să văd niște tipare (!) la nebunie.
Pentru sarcini mai complexe, de obicei, folosesc ceva de genul interpret (sau strategie ) care folosește constructor (sau fabrică ) pentru a crea fiecare parte din date.
Pentru streaming de date, întregul parser ar arăta cam ca un adaptor , adaptându-se dintr-un obiect de flux la un flux de obiecte (care de obicei este doar o coadă).
Pentru exemplul dvs. ar fi probabil un constructor pentru structura completă a datelor (de la cap la EOF) care utilizează intern constructorii pentru elementele de date interne (alimentate de interpret). Odată ce se întâlnește EOF, un obiect ar fi emis.
Cu toate acestea, obiectele create într-o instrucțiune de comutare în unele funcții din fabrică sunt probabil cea mai simplă metodă pentru mai multe sarcini mai mici. De asemenea, îmi place să-mi păstrez imuabilitatea obiectelor de date pe măsură ce nu știți niciodată când cineva lovește concurența pe gât :)