12.07.2015 Views

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

7. FlyweightPrzeznaczenie (cytat z ksiki <strong>GoF</strong>):Wykorzystuje współdzielenie obiektów w celu efektywnej obsługi wielkiej iloci drobnychobiektów.Przeznaczenie (cytat z fluffycat):Cz ponownie uywana oraz cz zmienna klasy s rozbijane na dwie klasy abyoszczdzi zasoby.Opis: Kelnerzy zbieraj zamówienia od klientów siedzcych przy rónych stolikach.Przekazuj je do kuchni, która realizuje zamówienia klientów. Lista zamawianych smakówherbat jest niewielka w porównaniu z iloci zamówie. Czyli, mówic wprost jest to wielkaale niezbyt wyrafinowana restauracja. Pyłkiem jest tu smak herbaty, ale nie numer stolika. Zatworzenie smaków odpowiada fabryka smaków herbaty!? Jeli w zamówieniu pojawi sinowy smak, to fabryka smaków jest o niego wzbogacana i smak ten moe by wielokrotniewykorzystany przy zamówieniach spływajcych z wielu stolików.Problem: JakRozwizanie: PrzezKlasa główna:_DP_S_<strong>GoF</strong>_Flyweightpackage pk.dydakt.to.dp.s.gof.flyweight;public class _DP_S_<strong>GoF</strong>_Flyweight {static TeaFlavor[] flavors =new TeaFlavor[100];//the flavors orderedstatic TeaOrderContext[] tables =new TeaOrderContext[100];//the tables for the ordersstatic int ordersMade = 0;static TeaFlavorFactory teaFlavorFactory;static void takeOrders(String flavorIn, int table) {flavors[ordersMade] =teaFlavorFactory.getTeaFlavor(flavorIn);tables[ordersMade++] =new TeaOrderContext(table);}public static void main(String[] args) {teaFlavorFactory = new TeaFlavorFactory();takeOrders("chai", 2);takeOrders("chai", 2);takeOrders("camomile", 1);takeOrders("camomile", 1);takeOrders("earl grey", 1);takeOrders("camomile", 897);takeOrders("chai", 97);takeOrders("chai", 97);takeOrders("camomile", 3);takeOrders("earl grey", 3);43

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!