Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]czy utworzenie obiektu w klasie to złamanie zasady low coupling?
porzeczki
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 15.09.2016
Skąd: Warszawa

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


Nie wiem czy dobrze rozumiem zasadę low coupling. Czy poniższe to jej złamanie?


  1. class A
  2. {
  3. public function calculate()
  4. {
  5. ...
  6. $b = $this->getB();
  7. $b->do();
  8. }
  9.  
  10. protected function getB()
  11. {
  12. return new B();
  13. }
  14. }


Rozumiem, że w low coupling chodzi o to by modyfikacja klasy B nie powodowała modyfikacji w klasie A.
Ale co w tym sensie daje mi wstrzyknięcie obiektu B przez konstruktor A?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Porównaj z:

  1. class A
  2. {
  3. protected $b;
  4.  
  5. public function calculate()
  6. {
  7. ...
  8. $this->b->do();
  9. }
  10.  
  11. public function setB(BInterface $b)
  12. {
  13. $this->b = $b;
  14. }
  15. }


--------------------
Go to the top of the page
+Quote Post
porzeczki
post
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 15.09.2016
Skąd: Warszawa

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


rozumiem, czyli dopóki nie zastosuję abstrakcji to nie ma znaczenia w kontekście "low coupling" czy tej obiekt tworzę wewnątrz klasy czy wstrzykuję przez konstruktor/setter. Right?
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Loose coupling polega na tym że obiekty powinny być ze sobą powiązane w najmniej ścisły sposób. Tworzenie na sztywno obiektu jest przeciwieństwem tego. Zero elastyczności, wymagało by przepisania całego systemu w przypadku zmian.


--------------------
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 - 06:29