Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Wzorzec fabryki klas?, a dokladnie obiektów
Beynar
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował Beynar 20.01.2008, 22:01:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Cotter
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 12
Dołączył: 6.01.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function make( $className )
  3. {
  4.  return new $className();
  5. }
  6. ?>

?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Beynar
post
Post #4





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


@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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 14:29