Fabrica de model php, esența

@pavel_salauyou nu sunt de acord, l-am descris în exemplul din fabrică. Plățile Managerii sunt exact același tip de obiecte. Doar în sensul, în acest exemplu ar putea fi aplicate Stategriya model, dar s-ar fi privit deja ca acest lucru:

Clasa de comandă protejat manager de $;
funcția publică __construct (PaymentManager $ manager)
$ This-> Manager = $ administrator;
>

funcția publică processPayment ($ date) $ this-> Manager-> proces ($ date);
>
>

PaymentManager clasă abstractă
proces funcția publică abstractă ($ date);
>

class FirstManager extinde PaymentManager
//.
>

class SecondManager extinde PaymentManager
//.
>

//.
în cazul în care ($ totală <10000) $manager = new SecondManager();
>
altfel $ manager de = new FirstManager ();
>

$ = Comandă nouă comandă ($ manager);
$ Ordinii de> processPayment (date $);

Aceasta este pur Strategia - substituim logica prin înlocuirea clasei. Și esența plantei - doar pentru a da un obiect (sau, uneori, clasa) de un anumit tip. Nu a fost întotdeauna un tip este o clasa, de multe ori invers. Aceeași logică sau diferite în aceste clase fabrica nu îi mai pasă.