Najwazniejszy dla mnie interfejs jest przy modelach. Ponieważ w teście jest napisane, że chca przełączyć MySQL do Casandra. Wiec zdecydowałem się na Dependency Injections.
Encje nie powinny być w ogóle zależne od bazy danych - mylisz dziedziny; powinieneś mieć jedną (wspólną) encję, ale wiele data persister
ów (wiele klas potrafiących dany model zapisać) - na przykład w taki sposób.
Rule of thumb: interfejs powinien opisywać zachowanie. Encje zachowania nie powinny mieć (są tylko workiem na dane), ergo: nie ma sensu tworzyć dla nich interfejsów.
Zdecydowałem się na trait, ponieważ mogę użyć tej metody wszedzie, gdzie chcę.
Jaką przewagę ma trait nad statyczną metodą w zamkniętej klasie / funkcją?
Pierwsza opcja jest szybsza i mniej kodu.
I przy okazji łamie hermetyzację; dzięki temu nikt nie broni mi napisać $video->title = ['ciekawe', 'co', 'się', 'stanie', 'teraz'];
albo $video->title = $video;
, i happy debugging later.
Nie rozumiem co to fasada i abstrakcja?
Stworzyłeś masę klas (takich jak Reader
) oraz interfejsów (takich jak VideoModelInterface
), których istnienie nie jest w żaden sposób uzasadnione; do zasadniczo prostych założeń zaprojektowałeś aplikację, która jest zwyczajnie ogromna (biorąc pod uwagę oczekiwaną skalę).