Autor wpisu: bastard13, dodany: 27.07.2012 13:37, tagi: oop
nie o formie, a o treści
Jest wiele artykułów na temat nazewnictwa i z przykrością stwierdzam, że i ja go poruszę:) Zdaję sobie sprawę, że dla niektórych Was temat jest prosty, ale uważam, że jest to na tyle istotna rzecz, że warto poświęcić jej choć jeden wpis.Chciałem jeszcze na wstępie zaznaczyć, że nie będę zajmował się tym, czy w nazwach powinniśmy używać podkreśleń, czy też wielkich liter, czy wszystko powinno być pisane ciągiem itp. Tu już wszystko zależy od polityki firmy i konwencji (bądź jej braku) przyjętych w danym języku programowania. Czytaj więcej »Autor wpisu: Łukasz Socha, dodany: 24.07.2012 21:19, tagi: php
pobierz w .pdf(przeznaczone do wydruku)
Wzorzec metody wytwórczej dostarcza abstrakcji do tworzenia obiektów nieokreślonych, ale powiązanych typów. Umożliwia także dziedziczącym klasom decydowanie jakiego typu ma to być obiekt.
Diagram klas wzorca Factory method
Wzorzec składa się z dwóch ról: produktu Product definiującego typ zasobów oraz kreatora Creator definiującego sposób ich tworzenia. Wszystkie typy produktów (ConreteProduct1, ConreteProduct2 itp.) muszą implementować interfejs Product. Z kolei ConcreteCrator dostarcza mechanizm umożliwiający stworzenie obiektu produktu danego typu.
Przykładowa implementacja
<?php // Produkty interface Product{ public function getName(); } class ConceteProduct1 implements Product{ public function getName() { return "Produkt 1"; } } class ConceteProduct2 implements Product{ public function getName() { return "Produkt 2"; } } // Kreator tworzacy obiekt produktu interface Creator{ public function create($type); } class ConcreteCreator implements Creator{ public function create($type) { switch($type) { case 'Product 1': return new ConceteProduct1(); break; case 'Product 2': return new ConceteProduct2(); break; } } } // testy $creator = new ConcreteCreator(); $prod1 = $creator->create("Product 1"); $prod2 = $creator->create("Product 2"); echo $prod1->getName(); // wyswietli "Produkt 1" echo $prod2->getName(); // wyswietli "Produkt 2" ?>
Przykład z życia wzięty
Tworzymy system zamówień dla pizzerii. W ofercie są różne typy pizz. Podstawowym pytaniem jest: jak stworzyć wydajny mechanizm do tworzenia obiektów różnych rodzai pizz? Posłużmy się metodą wytwórczą…
<?php // Produkty interface Pizza{ public function getName(); } class HawaiianPizza implements Pizza{ public function getName() { return "Hawalian pizza"; } } class DeluxePizza implements Pizza{ public function getName() { return "Deluxe pizza"; } } // Kreator tworzacy obiekt produktu interface Creator{ public function create($type); } class ConcreteCreator implements Creator{ public function create($type) { switch($type) { case 'Hawalian': return new HawaiianPizza(); break; case 'Deluxe': return new DeluxePizza(); break; } } } // testy $creator = new ConcreteCreator(); $prod1 = $creator->create("Hawalian"); $prod2 = $creator->create("Deluxe"); echo $prod1->getName(); // wyswietli "Hawalian pizza" echo $prod2->getName(); // wyswietli "Deluxe pizza" ?>
Dzięki zastosowaniu factory method możemy w łatwy sposób dołączać kolejne pizze. Zamiast używania konstrukcji switch (korzystam z tego, gdyż nie chcę komplikować przykładu) warto byłoby stworzyć bardziej abstrakcyjny mechanizm.
Zalety i wady
Zalety:
- Niezależność od konkretnych implementacji zasobów oraz procesu ich tworzenia.
- Wzorzec hermetyzuje proces tworzenia obiektów, zamykając go za ściśle zdefiniowanym interfejsem./li>
- Spójność produktów – w sytuacji, gdy pożądane jest, aby klasy produkty były z określonej rodziny.
Wady:
- Nie znam…
Zastosowanie
Wzorzec metody wytwórczej można wykorzystać między innymi przy tworzeniu systemów zamówień, gdzie oferta może się zmieniać, ale składa z jednakowego typu produktów.
Innym zastosowaniem może być system pluginów. Dzięki zastosowaniu metody wytwórczej możemy łatwo rozbudowywać nasz skrypt o kolejne funkcjonalności (np. o obsługę kolejnych formatów plików).
Autor wpisu: bastard13, dodany: 23.07.2012 14:31, tagi: design
celem wyjaśnienia własnych poczynań
Dzisiaj skończyłem czytać książkę "Język inżynierii systemów SysML. Architektura i zastosowania. Profile UML 2.x w praktyce" i choć kiedyś sobie obiecałem, że na blogu nie będę umieszczać żadnych recenzji, czy też opinii na temat książek, doszedłem do wniosku, że pora na weryfikację tego poglądu:)Jeżeli przeczytam coś, obok czego naprawdę nie powinno się przejść obojętnie - napiszę o tym..Jeżeli przeczytam coś, czego należy unikać za wszelką cenę - również postaram się opublikować stosowny artykuł:)Pomijam oczywiście książki, które przeczytałem do tej pory, bo albo wrzuciłem o nich wzmiankę na Google+ albo na Twitterze, a nawet jeżeli nie, to są istotniejsze tematy, na które warto pisać:P Czytaj więcej »Autor wpisu: bastard13, dodany: 20.07.2012 14:55, tagi: oop, php
krótki wstęp, a w nim o tym, czym jest interfejs
Do czego wykorzystuje się interfejsy? Do zapewnienia, że obiekty danej klasy będą posiadały określone metody. Po co chcemy mieć tą pewność? Ponieważ w danym miejscu ich posiadanie jest niezbędne do bezbłędnego wykonania pewnych instrukcji. Dlaczego wszystkie metody interfejsu są abstrakcyjne? Gdyż nie wymagamy określonego ich działania, wymagamy jedynie ich istnienia. Czytaj więcej »Autor wpisu: Vokiel, dodany: 19.07.2012 19:50, tagi: php
Rusza kolejna (trzecia) edycja ogólnopolskiej konferencji entuzjastów PHP. Tak samo jak w przypadku poprzednich edycji, organizatorem jest zarząd stowarzyszenia Polska Grupa Użytkowników Linuxa (PLUG). Spotkanie odbędzie się w ostatni weekend września – w hotelu „Przedwiośnie”, w Mąchocicach Kapitulnych (kapitalna nazwa) koło Kielc.
PHPCon Poland 2012
Tegoroczna konferencja objęta została sponsoringiem firmy MegiTeam, swój wkład potwierdzili też Microsoft oraz Mentax. Impreza pod medialnym patronatem serwisów php.pl, OSWorld, OSNews, 7thguard.net oraz webhosting.pl. A od teraz, też blog.Vokiel.com.
Co nam przyniesie tegoroczna edycja? Przede wszystkim bardzo istotną zmianę – uczestnicy mają po raz pierwszy realny wpływ na agendę. To właśnie głosy uczestników zadecydują o tym kogo i z czym będzie można usłyszeć podczas konferencji.
Na agendę (poszczególne prelekcje) można głosować na stronie www.phpcon.pl/agenda. W chwili tworzenia tego wpisu dostępnyc jest 29 propozycji – jest o co walczyć, bo w programie spotkania ma szansę pojawić się ich tylko kilkanaście. Prelekcje zostaną dobrane na podstawie liczby oddanych głosów w rankingu, rozpiętość jest już dość znaczna – od 7 do 39 głosów.
Warto wspomnieć o gościach specjalnych, w tym roku są to:
- Wim Godden, który ma w swoim dorobku pracę dla takich projektów jak choćby PHPAdsNew, a w tej chwili zajmuje się skalowalnością i HA.
- Thijs Feryn – organizator konferencji PHPBenelux oraz ewangelista odpowiedzialny za kontakty społecznościowe z belgijskiego Combella – firmy hostującej m.in. joind.in.
- Jam McGuire – drupalista duszą i ciałem, pracujący dla niemieckiej firmy Aquia i reprezentujący Drupala, gdy tylko nadarzy się okazja.
Czas i miejsce
PHPCon 2012 odbędzie się w dniach 28 – 30 września 2012 r w miejscowości Mąchocice Kapitulne (rejon Gór Świętokrzyskich). Miejscem wystąpień będzie położony niedaleko Kielc Hotel Przedwiośnie ***.
Do tych co wybierają się na PHP Con 2012 – do zobaczenia we wrześniu!
Autor wpisu: matipl, dodany: 19.07.2012 18:59, tagi: php
Od początku lipca można zapisywać się na tegoroczną edycję polskiej konferencji poświęconej PHP – PHPCon Poland.
W podstawowych kwestiach nic się nie zmieniło od zeszłego roku – organizatorem jest PLUG (=niskie ceny ), miejsce to samo – 15 km od Kielc, Mąchocice Kapitulne (delegacja z Trójmiasta?). Sama konferencja odbędzie się w dniach 28-30 września. Znamy już również pierwszych prelegentów – będzie to m.in. Wim Godden, twórca systemu reklamowego phpAdsNew (obecnie znany jako OpenX) czy Thijs Feryn.
Jak już wspomniałem wcześniej, reszta agendy zależy od Was samych – uczestników. Po rejestracji istnieje możliwość oddania głosu na wybrane przez Was prelekcje.
Na chwilę obecną 1/3 miejsc dla uczestników jest już zajęta. Rejestracja będzie możliwa teoretycznie do 14 września, ale prawdopodobnie w sierpniu skończą się wolne miejsca. Cena jak zwykle przystępna:
- do 14 sierpnia 290 zł (dla firm 350 zł netto)
- do 31 sierpnia 310 zł (dla firm 370 zł netto)
Dlatego warto pospieszyć się z decyzją…