@jarekr000000, @somekind
Nie jestem pewien, czy Strategia może być HOF. To już czysta sofistyka, ale...
Wzorzec projektowy strategii, to sposób na rozwiązanie określonej klasy problemów, czyli zmiany działania fragmentu programu, w trakcie jego wykonywania, sterowana przez coś z zewnątrz. Oczywiście taki problem występuje niezależnie od języka.
Jednak wzorzec, to nie tylko definicja problemu, ale również zalecane rozwiązanie, które wygląda tak:
Oczywiście, że tak, przecież piszę o tym od początku.
Wreszcie jakiś konkret.
Padłem xD
Konkretnie wyjaśniam o tym, czym jest strategia w chyba już czwartym ostatnio powstałym wątku na ten temat. Niestety niektórzy ciągle nie są w stanie zajarzyć, ze podróż nad morze to nie jest skrzynia biegów - nawet jeśli gdzieś tam w trakcie tej podróży ta skrzynia biegów jest używana.
Podobnie jak masz 99% coverage'a, to nikt nie powie że kod niej est przetestowany, ale nie można też powiedzieć żę jest w pełni przetestowany.
To taki offtop, ale jak widzę 99% coverage, to znaczy, że ktoś skupiał się na procentach, a nie testach, więc zakładam, że w ogóle nic nie jest przetestowane.
Ja teraz nie posługuję się w ogóle określeniami "obiektowy język", i mówię tylko "obiektowy kod" albo "nie obiektowy kod". Nie ma języka który by Cię zmusił żebyś uniezależnił dane od implementacji, zawsze jak się uprzesz, to złamiesz gdzieś paradygmat.
Masz trochę racji, ale podobnie nie ma noża, który by Cię zmusił do krojenia sera. I nożem do sera możesz pokroić mięso. Czy przestanie on być nożem do sera?
Można pisać nieobiektowy kod w obiektowym języku, ale język nadal będzie obiektowy. Bo język obiektowy oznacza, że można w nim programować obiektowo.
A to, że gdzieś tam teoretycznie możesz mieć algorytm, który nie przyjmuje żadnych parametrów (aczkolwiek trudno im sobie to wyobrazić w nieakademickim przykładzie) nie zmienia faktu, że strategia to wzorzec programowania obiektowego.
Niektóre są. Mogę sobie łatwo wyobrazić aplikacje która nie ma absolutnie żądnej logiki w funkcjach statycznych, i spełniająca pozostałe założenia.
Bardzo wątpię. Gdzieś tam na pewno będzie wywołanie jakiegoś statycznego kodu, chociażby z bibliotek frameworka albo systemowych.