Witam
Mam problem natury projektowej :-)
Mam dana klase systemu szablonów, chce stworzyc klase pozwalajaca na szybką obsługe tego, jakby wzorzec adaptera. Nie wiem jednak czy moze skorzystac z dziedziczenia. Czyli dwie mozliwosci :
:arrow: Klasa macierzysta 'Template' jest przodkiem klasy sterujacej 'TplManager', która wychdozi z tego jest rozszerzeniem jej. Wtedy w konstruktorze uruchamiamy konstruktur
[php:1:a538664b0b]
function __construct($param){
parent::__construct($param);
}
[/php:1:a538664b0b]
Co daje mi pełna włądze nad kodem i proste odwołania przez pseudozmienna $this.
:arrow: Drugie - Klasa 'Template' jest zawierana przez referencje we właściwości.
[php:1:a538664b0b]
function __construct($params){
$this -> tpl =& new Template($params)
}
[/php:1:a538664b0b]
Mam tu z kolei władze poprzez referencje w wartosci.
:?: teraz pytanie : która możliwosć jest lepsza pod wzgledem nie wydajnosciowym, ale bardziej mi chodzi, o zgodnosć z zasadami oop.
:idea: Wedle mnie pierwszy sposób moze i wygodniejszy, ale nijak ma sie do zasady : "Stosuj kompozycje niz dziedziczenie" - Wtedy jednak mam wydaje mi sie pełniejsza kontrole nad klasą, za sprawą uzycia public/protected/private - moge zapezpieczać na dwa poziomy, tzw. zewnetrzny i rodzinny [ protected a private]. Drugi sposób byłby jednak zgodny ze znanym wzorcem adaptera, który to wymyslili ludzie doswiadczenni. Jednak wydaje mi sie tu problemem jeden fakt. Jeśli klasa Template sie rozrośnie, to moze zostać zachwiana zasada 'otwarcia i zamkniecia', gdy w pierwszym rozwiazaniu, zmieniam tylko slowo po 'extends'.
Wiec co bedzie lepsze ?
pozdrawiam DhuCerbin