Wpis z mikrobloga

@MacDada: czyli zrobić tak:
Klasa Task zostaje jak jest
Zrobić klase TaskCollection która ma samą listę, metody sortowania itp
Klase repo zmienic tak zeby miala w sobie TaskCollection plus metody na zapisywanie itp?
  • Odpowiedz
@krasnoludkolo: Tak, repo zapisuje i udostępnia obiekt lub ich kolekcję.

Z czego „zapisuje” to tak jakby „w domyśle” – bo wyobraź sobie, że pamięć nie jest problemem, aplikacje żyją wiecznie i cała aplikacja siedzi w RAMie. Tak właśnie należy traktować repo – jako miejsce, które te dane przechowuje. Ale, że żyjemy w świecie nieidealnym, to repo zazwyczaj udaje tę perfekcję przez zapisywanie i odczytywanie skądś (bazki, pliku, etc).
  • Odpowiedz
@krasnoludkolo: Nie, repo może mieć co najwyżej metodę zwracającą posortowaną kolekcję, np (pseudokod):

Collection tasksSortedByPriority = taskRepo.getAllSortedBy('priority');
Collection tasksSortedByPriority = taskRepo.getAllSortedByPriority();

Korzystający z repo nie może polegać na tym, że repo „pamięta” kolejność elementów w
  • Odpowiedz
@krasnoludkolo:

1. Robisz taskRepository.getTaskCollection().sortBy(SortType.NAME); – naruszając Law of Demeter. Osobiście nie traktuję tego jako „błąd” (też mi się zdarza), ale raczej staram się w takich przypadkach zastanowić czy na pewno to musi być w ten sposób.

2. Po co Ci settery 1 2 ? Jeśli te obiekty są wymagane do działania – wymagaj ich w konstruktorze. Settery możesz zostawić jeśli faktycznie będziesz chciał móc podmienić te
  • Odpowiedz
@krasnoludkolo: Pomyśl o tym jeszcze tak:

Jeśli robisz taskRepository.getTaskCollection().sortBy(SortType.NAME); to repo nie powinno się nazywać TaskRepository tylko TaskCollectionRepository – bo służy wtedy do przechowywania obiektów TaskCollection, a nie obiektów Task ;-)
  • Odpowiedz
W każdym razie kolekcja to oddzielny byt od repo – można element usunąć z kolekcji, ale nie powinien on automatycznie wylecieć też z repo.


W sumie automat byłby akceptowalny (jeśli chodzi o dodawanie/usuwanie), ale tylko w ten sposób, że kolekcja przyjmuje w konstruktorze repo – i jak usuwasz element na kolekcji – to kolekcja usuwa wtedy element na repo (kaskadowo).

Ale nie odwrotnie (że usuwanie z repo wywala automatycznie z kolekcji) i
  • Odpowiedz
@MacDada: dzięki wielkie ;) zajmę się tym wszystkim po powrocie ;)
na szybko co do pkt 2 i 3 to nie tworze tych obiektów przez new tylko pobieram z widoku (androidowe api) a ten drugi konstruktor wlasnie do tego jest (android se z niego korzysta)
  • Odpowiedz