Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wzorzec fabryki klas?
Forum PHP.pl > Forum > PHP
Beynar
Jak zaimplementowac ten wzorzec w praktyce?
tak by moc wywolac np.

Kod
<?
$obj=factory::make("myClass");
?>


co zwroci do zmiennej obiekt klasy myClass
googlowalem, ale nic konkretnego

nie wiem jak się za to zabrać.
Cotter
Zrobię to na przykładzie. Mamy Pizzerię, która przygotowuje pizze, samą Pizzę oraz fabrykę pizz (PizzaFactory).

Wzorzec fabryki wygląda następująco:
Kod
class Pizzeria
{
    private $fabryka;
    function __construct()
    {
        $this->fabryka = new PizzaFactory();
    }
    function przygotujPizze($nazwaPizzy)
    {
          $pizza = $this->fabryka->make($nazwaPizzy);
            
           $this->podgrzejPizze($pizza);
            //... itd
            return $pizza;
    }
}

class PizzaFactory
{
    function make($nazwaPizzy)
     {
         //przykladowa implementacja
         if ($nazwaPizzy == "margerita")
             return new Margerita();
         else if ($nazwaPizzy == "americana")
             return new Americana();
         //... itd
     }
}


Być może ten wzorzec nie jest tym czego potrzebujesz dokładnie (w twoim kodzie używasz funkcji statycznej). Są jeszcze inne podobne wzorce, które mogą być pomocne: metoda fabrykująca, singleton
dr_bonzo
  1. <?php
  2. function make( $className )
  3. {
  4.  return new $className();
  5. }
  6. ?>

?
Beynar
@Cotter tylko, ze tam na sztywno musze w fabryce jaki warunek powoluje jaka klase
Kod
         if ($nazwaPizzy == "margerita")
             return new Margerita();

a ja potrzebuje cos dynamicznego..

@dr_bonzo
o dokladnie cos takiego mi chodzilo smile.gif myslalem ze to nie zadziala... przeciesz prbowalem. ah, ok.

Dzieki Panowie za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.