Ma tam u instanci vytvorit prave pomoci ty moji factorky a po uzivatli tridy chtit, aby dodal tu factory (napriklad pridat ji mezi parametry metody. V tomto pripade ta factory obali kontruktor/statickou tovarnu/whatever tak, abych uvnitr ty metody moh ze Stringu ziskat objekt. V nejjednodussim pripade ta factory, co uzivatel doda bude lambda obaleni konstruktoru s argumentem typu String. Klient jiz konstruktor muz pouzit primo, nebot vi, co je F za konkretni tridu zac, nebo udelat tu prasarnu s reflexi konstruktoru, ale v tom pripade neni jiz zodpovednost na tobe, ale na nem.
AD public field: Rozhodne to nedelat. Pokud chces pri get/set pridat nejakou dalsi akci, tak automaticky rozbijes API, pres gettery/settery si muzu na pozadi delat co chci, aniz bych rozbil API (tzn klientsky kod se nemusi prizpusobovat moji zmene), navic u get je casto ta promenna virtualni (v dane tride vubec neexistuje). Rozumny IDE (napr. Eclipse) vygeneruje vsechny gettery/settery za programatora, takze argument lenosti zde postrada smysl (a zanechava spousty problemu). Zde bych i stouralum poradil jednu vec: piste kod, kterej se dobre cte a upravuje a nevymejslejte optimalizacni hovadiny, od toho tu mame prekladac