Template = szablon.
Zadanie programistyczne
Przygotować klasy opisujące serwowanie gorących napojów.
Rozwiązanie
Ponieważ procesy są bardzo podobne można użyć wzorca Template (szablon)
1. Tworzymy klasę GoracyNapoj
.
2. Metody wsyp()
, dodajDodatki()
są metodami szablonowymi.
Opisują schemat czynności, ale są bardzo ogólne i wymagają uszczegółowienia,
(nadpisania) w klasach pochodnych. Metoda przygotuj()
tez jest szablonowa, ale
nie jest nadpisywana, gdyż schemat przygotowywania kawy i herbaty jest
taki sam. Gdyby przygotowywanie kawy i herbaty różniło się albo utworzono by
inny napój, który ma inny schemat przygotowywania trzeba by
metodę przygotuj()
też nadpisać.
Klasy
Klasa GoracyNapoj
package template; class GoracyNapoj { public void przygotuj() { zagotujWode(); wsyp(); dodajCukier(); dodajDodatki(); nalejWody(); zamieszaj(); } private void zagotujWode() { System.out.println("Gotowanie wody"); } void wsyp() { System.out.println("Wsypywanie składnika"); } private void dodajCukier() { System.out.println("Dodawanie cukru"); } void dodajDodatki() { System.out.println("Dodawanie dodatków"); } private void nalejWody() { System.out.println("Nalewanie wody"); } private void zamieszaj() { System.out.println("Mieszanie"); } }
Klasa Herbata
package template; class Herbata extends GoracyNapoj { @Override public void wsyp() { System.out.println("Dodawanie herbaty"); } @Override public void dodajDodatki() { System.out.println("Dodawanie dodatkow: Cytryna, Miód"); } }
Klasa Kawa
package template; class Kawa extends GoracyNapoj { @Override public void wsyp() { System.out.println("Wsypywanie kawy"); } @Override public void dodajDodatki() { System.out.println("Dodawanie dodatków: Śmietanka, Czekolada"); } }
Klasa Barman
package template; class Barman { public static void main(String[] args) { Herbata tea = new Herbata(); Kawa coffee = new Kawa(); System.out.println("Przygotowywanie herbaty ..."); tea.przygotuj(); System.out.println("Przygotowywanie kawy ..."); coffee.przygotuj(); } }
Wynik
Klasa Barman jest klasa uruchamiająca. Po uruchomieniu zobaczymy:
Przygotowywanie herbaty ... Gotowanie wody Dodawanie herbaty Dodawanie cukru Dodawanie dodatkow: Cytryna, Miód Nalewanie wody Mieszanie Przygotowywanie kawy ... Gotowanie wody Wsypywanie kawy Dodawanie cukru Dodawanie dodatków: Śmietanka, Czekolada Nalewanie wody Mieszanie