Wystarczy tylko nadpisać procedurę tworzenia produktu, żeby taką restaurację rozbudować do postaci restauracji serwującej np. pączki.
Jeśli w klasie, w której bebechach wytwarzany jest jakiś produkt, obudujesz konstruktor
product = new Product()
metodą wytwarzającą ten produkt, np.
product = getProduct()
to będziesz mógł w prosty sposób rozbudować tą klasę, by otrzymać inną analogiczną.
Wystarczy, że nadpiszesz jedynie metodę getProduct().
Metoda getProduct w jednej klasie może zwracać obiekt typu Hamburger, a w innej nadpisanej: obiekt typu Pączek.
Dodatkowo jeśli klasy Hamburger i Pączek dziedziczą ze wspólnej klasy bazowej, to mogą mieć wspólne właściwości i metody (usmaż(), zapakujWKarton()), których można użyć w bebechach klasy Restauracja.
Smacznego!