Podsumowanie wzorców projektowych GoF
Podsumowanie wzorców projektowych GoF
Podsumowanie wzorców projektowych GoF
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
4. BridgePrzeznaczenie (cytat z ksiki <strong>GoF</strong>):Oddziela abstrakcj od jej implementacji, tak by mogły si zmienia niezalenie jedna oddrugiej.Przeznaczenie (cytat z fluffycat):Abstrakcja i implementacja znajduj si w rónych hierarchiach klas.Opis: Przykład przyrzdzania wody sodowej o rónych smakach. Smak to implementacja,któr wybieramy najpierw. Na wybranej implementacji moemy eksperymentowa poprzezabstrakcj, jak jest wybór iloci wody sodowej. Ilo moe by dowolna dziki odpowiedniejimplementacji zapewniajcej stenie soku w wodzie sodowej niezalene od ilociprzyrzdzonego napoju. Mona dodawa nowe smaki (zmiana implementacji) niezalenie odsposobu zarzdzania iloci napoju (stała abstrakcja). Mona te zmienia iloprzyrzdzanego napoju (zmiana abstrakcji) niezalenie od smaków jakimi dysponujemy (stałaimplementacja). Dziki takiej separacji rónych zjawisk otrzymujemy elastyczno wkreowaniu rónych napojów. Nb. moemy si pokusi o zmian stenia soku?Problem: JakRozwizanie: PrzezKlasa główna:_DP_S_<strong>GoF</strong>_Bridgepackage pk.dydakt.to.dp.s.gof.bridge;public class _DP_S_<strong>GoF</strong>_Bridge {public static void testCherryPlatform() {SodaImpSingleton sodaImpSingleton =new SodaImpSingleton(new CherrySodaImp());System.out.println("testing medium soda on the cherry platform");MediumSoda mediumSoda = new MediumSoda();mediumSoda.pourSoda();System.out.println("testing super size soda on the cherry platform");SuperSizeSoda superSizeSoda = new SuperSizeSoda();superSizeSoda.pourSoda();}public static void testGrapePlatform() {SodaImpSingleton sodaImpSingleton =new SodaImpSingleton(new GrapeSodaImp());System.out.println("testing medium soda on the grape platform");MediumSoda mediumSoda = new MediumSoda();mediumSoda.pourSoda();System.out.println("testing super size soda on the grape platform");SuperSizeSoda superSizeSoda = new SuperSizeSoda();superSizeSoda.pourSoda();}public static void testOrangePlatform() {SodaImpSingleton sodaImpSingleton =34