Praktyczny przykład – kalkulator – lambda i interfejs funkcjonalny #3

W tym odcinku niezwykle prosty przykład zastosowania lambd i interfejsu funkcjonalnego bez fajerwerków 😉  Oczywiście sam przykład jest na wyrost i można go uprościć pomijając nasz interfejs, ponieważ w pakiecie Java 8 mamy gotowy interfejs, który moglibyśmy wykorzystać. Ale o tym jeszcze będzie 🙂

Zacznijmy od naszego interfejsu, który nie jest niespodzianką:

Metoda abstrakcyjna przyjmuje dwa parametry oraz zwraca typ double.

W naszym kalkulatorze potrzebujemy mapę:

Kluczem jest typ String, który będzie przechowywał dla nas symbol operatora, wartością będzie coś co reprezentuje nasz interfejs czyli wyrażenie lambda w oparciu o ten interfejs.

Posiadamy już mapę, czas na jej wypełnienie:

Do mapy dodaję kolejno działania, jakie chcę wykonywać oraż wyrażenie lambda, które ma to działanie realizować. W dłuższej  i może dla początkujących w bardziej czytelnej formie, wyglądałoby to tak:

Ostatnią metodą jest:

Z mapy pobieramy obiekt za pomocą klucza, który kryje się pod zmienną operator. Wiemy, że za nim kryje się nasza lambda zaimplementowana w oparciu o CalculationInterface. Pozostaje wywołać na niej metodę calculate i przekazać parametry do obliczeń.

Wywołanie naszego kalkulatora wygląda tak:

Proste, działa i pokazuje jak można wykorzystać lambdę. Jak zauważyliście udało się uniknąć ifów, swiczów i innych okropnych rzeczy, które często przy implementacjach kalkulatora mają miejsce 🙂 Wykorzystując Java 8 użyliśmy jednej metody, która oblicza dla nas różne działania.

Projekt ten znajdziecie na GitHubie: https://github.com/ZacznijProgramowac/KursJava8

Dla przejrzystości pokazuję cały kod:

Wynik:

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *