
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
