Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ponowne wykorzystanie interfejsów
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Witam,

Żałóżmy że : przestrzeń nazw a.b.c ma klase D i interfejs E. Obiekt klasy D sprawdza czy przekazany do niego obiekt innej klasy implementuje interfejs D i wykonuje pewne czynności. Potrzbna mi teraz taka sama funkcjonalność w klasie X, która musi wykonać identyczną czynność. Zastanawia mnie czy powinienem w tej sytuacji powielić tą funkcjonalność czy skorzystać z istniejącej wedle zasady DRY.

Dokładnie to chodzi o przekazywanie obiektu kontekstowego w parametrze konstruktora. Pyrz towrzeniu obiektu D sprwadza czy implementuje on odpowiedni interfejs i go przekazuje. To samo musi robić obiekt klasy X.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
starach
post
Post #2





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


  1. <?php
  2. namespace A\B\C;
  3. class D
  4. {
  5. public function stworzObiekt($sClass)
  6. {
  7. // Sprawdz za pomoca ReflectionAPI czy klasa implementuje interfejs E
  8. // Jeśli tak to stworz przekazujac obiekt klasy F
  9. }
  10. }
  11. interface E
  12. {
  13.  
  14. }
  15. namespace E\F\G;
  16. class H
  17. {
  18.  
  19. }
  20. class I implements \A\B\C\E
  21. {
  22. public function __construct(F $f) { }
  23. }
  24.  
  25. $d = new D();
  26. $h = $d->stworzObiekt('H');
  27. $i = $d->stworzObiekt('I');
  28.  
  29. namespace J\K\L;
  30. class M
  31. {
  32. public function stworzObiekt($sClass)
  33. {
  34. /* Powinienem zaimplementować od nowa całe to sprawdzanie interfejsu czy w myśl Don't Repeat Yourself ( DRY ) zmodernizować tak implementację wcześniejszą żebym mógł ją wykorzystać ponownie */
  35. }
  36. }
  37. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 16.10.2025 - 10:25