12.07.2015 Views

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

Podsumowanie wzorców projektowych GoF

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2. VisitorPrzeznaczenie (cytat z ksiki <strong>GoF</strong>):Okrela operacj, która ma by wykonana na elementach struktury obiektowej. Umoliwiadefiniowanie nowej operacji bez modyfikowania klas elementów, na których ona działa.Przeznaczenie (cytat z fluffycat):Jedna lub wicej klas pozostajcych we wzajemnych relacjach maj t sam metod, którawywołuje metod specyficzn dla nich w innej klasie.Opis: Co to jest blurb? Tworzone s tu zarówno krótkie jak i długie opisy na DVD. Kade zDVD moe by gr, ksik albo filmem. S te dwaj odwiedzajcy: jeden dla krótkichopisów, a drugi dla długich. Kady z nich odwiedza klasy konkretne z hierarchii informacji okorzeniu w klasie AbstractTitleInfo. Przykładem moe by system tworzcy opisy płytekDVD na podstawie dostpnych dla niego informacji o tytułach i o charakterze nagrania.Problem: JakRozwizanie: PrzezKlasa główna:_DP_B_<strong>GoF</strong>_Visitorpackage pk.dydakt.to.dp.b.gof.visitor;public class _DP_B_<strong>GoF</strong>_Visitor {public static void main(String[] args) {AbstractTitleInfo bladeRunner =new DvdInfo("Blade Runner", "Harrison Ford", '1');AbstractTitleInfo electricSheep =new BookInfo("Do Androids Dream of Electric Sheep?","Phillip K. Dick");AbstractTitleInfo sheepRaider =new GameInfo("Sheep Raider");TitleBlurbVisitor titleLongBlurbVisitor =new TitleLongBlurbVisitor();System.out.println("Long Blurbs:");bladeRunner.accept(titleLongBlurbVisitor);System.out.println("Testing bladeRunner " +titleLongBlurbVisitor.getTitleBlurb());electricSheep.accept(titleLongBlurbVisitor);System.out.println("Testing electricSheep " +titleLongBlurbVisitor.getTitleBlurb());sheepRaider.accept(titleLongBlurbVisitor);System.out.println("Testing sheepRaider " +titleLongBlurbVisitor.getTitleBlurb());TitleBlurbVisitor titleShortBlurbVisitor =new TitleShortBlurbVisitor();System.out.println("Short Blurbs:");bladeRunner.accept(titleShortBlurbVisitor);System.out.println("Testing bladeRunner " +titleShortBlurbVisitor.getTitleBlurb());electricSheep.accept(titleShortBlurbVisitor);System.out.println("Testing electricSheep " +53

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

Saved successfully!

Ooh no, something went wrong!