Osobně vidím stejné dilema, jenže obráceně: proč je pro mě podstatné, že je to zrovna CSVImportOrderService
? Všechny věci, které jsou pro csv
specifické za mě řeší ta třída (od toho přeci je), a tam, kde se držím rozhraní, zase nezáleží, jestli je implementací csv
nebo sqlite
(ať se neopakujeme :))
Nehledě na to, že pokud mi ta služba přiteče parametrem, tak ten bude stejně skoro vždycky typu ImportOrderServiceInterface
. Ze situací, kdy tomu tak nebude, mě napadají serializace a debugovací pohledy dovnitř objektu, a obě tyhle situace mohou být stejně pokryté interfacem a metodou - tyhle věci budu chtít dělat ať už budu mít pod rukama instanci CSVImportOrderService
nebo XLSXImportOrderService
.
Jediné místo, které je opravdu specifické pro csv
bude konstruktor (nebo pár řádků těsně za ním), kde budu nastavovat oddělovače, konce řádků, skutečný zdroj těch dat atp., a tam je zase spousta věcí zřejmá z kontextu. Ani tam bych se nedržel typu tak úzce, protože zítra nebo příští týden z toho bude switch
a příští měsíc ImportOrderServiceFactory
.
Pracuji 8 let jako softwarový inženýr, specializuji se na backend a Javu. Na Root.cz jsem aktivní již 20 let. Jsem fanda do Unixu, který denně v práci použivám.