Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: bastard13, dodany: 02.08.2012 15:18, tagi: design, oop

na początek

Na początku był kod. Kod, który się rozrastał, żył, ewoluował, a pracę nad nim wykonywało programistów wielu. I kod ten spełniał swoje zadanie. I nigdy nie dotknął go zbędny proces refaktoryzacji, co pozwoliło, że rozmiary jego były naprawdę okazałe, jego możliwości - mnogie, a czytelność - żadna."Na szczęście", w trakcie pracy nad kodem, wielu programistów, którzy mieli z nim do czynienia, otaczali kolejne linijki instrukcji, pokaźną ilością komentarzy, które miały na celu przekazać przyszłym pokoleniom tajemnice zawarte w kodzie i uzmysłowić jego działanie. Czytaj więcej »

Autor wpisu: batman, dodany: 01.08.2012 08:00, tagi: jquery, javascript

gridster.js to plugin jQuery, dzięki któremu będziemy w stanie stworzyć kolekcję elementów w postaci grida, gdzie każdy element można przeciągnąć w dowolne miejsce. Plugin sam zadba o odpowiednie dopasowanie otaczających elementów. Do czego to się może przydać? Na przykład do (…)

Read the rest of this entry »

Autor wpisu: bastard13, dodany: 30.07.2012 13:29, tagi: design

Jak łatwo zauważyć pobawiłem się trochę wyglądem strony:) Zdecydowałem się na taki zabieg z dwóch powodów. Po pierwsze, stary wygląd już mnie zaczął nudzić:P Po drugie, chciałem dodać trochę radosnych kolorów:)Skąd ten wpis? Bo nie jestem do końca pewien, czy wygląd jest dobry, czy nie rozprasza uwagi, czy kolory nie są zbyt jaskrawe. Niestety moje zdolności odnośnie projektowania wyglądu stron internetowych nie są powalające, dlatego też zdecydowałem się na opublikowanie tego krótkiego wpisu, z nadzieją na jakieś uwagi z Waszej strony:)Jeżeli coś Wam się nie podoba, coś warto zmienić lub coś po drodze popsułem i nie zauważyłem tego, to będę wdzięczny za komentarze, najlepiej konstruktywne:PPonieważ milczenie jest oznaką zgody, to brak komentarzy uznam za podzielenie mojego pomysłu na nowy wygląd strony, więc lepiej zastanówcie się dwa razy, czy warto z komentowania zrezygnować:)

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).

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

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 »
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.