Prawo Demeter

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Prawo Demeter dla funkcji (ang. Law of Demeter (LoD), inaczej Zasada minimalnej wiedzy lub Reguła ograniczania interakcji[1] - ang. Principle of Least Knowledge ) zasada projektowania oprogramowania (w szczególności projektowania w językach obiektowych), która w skrócony i nieco nieformalny sposób jest ujmowana: "rozmawiaj tylko z (bliskimi) przyjaciółmi".

Treść[edytuj | edytuj kod]

W pełnej formie mówi ono, iż metoda danego obiektu może odwoływać się jedynie do metod należących do:

  • tego samego obiektu,
  • dowolnego parametru przekazanego do niej,
  • dowolnego obiektu przez nią stworzonego,
  • dowolnego składnika, klasy do której należy dana metoda.[2]

Historia[edytuj | edytuj kod]

Prawo Demeter zostało sformułowane przez Iana Hollanda w 1987 roku na Northeastern University podczas pracy nad projektem o tej samej nazwie.[3]. W roku 1988 zostało zaprezentowane na konferencji OOPSLA w wystąpieniu Karla J. Lieberherr, Ian M. Holland, Arthur J. Riel Object-Oriented Programming: An Objective Sense of Style.

Zalety[edytuj | edytuj kod]

Stosowanie prawa Demeter prowadzi do zmniejszenia zależności. Kod wywołujący daną metodę nie musi znać struktury obiektu na rzecz którego wywołuje ją. Nie musi również wiedzieć jaki faktycznie obiekt realizuje daną operację. Dzięki temu zmiany tej struktury nie wymagają zmian klienta używającego tej metody.

Zwiększa się zatem łatwość utrzymania kodu.

Wady[edytuj | edytuj kod]

Ścisłe stosowanie prawa Demeter może prowadzić do powstania wielu metod, których jedyną odpowiedzialnością jest delegowanie wykonania operacji do składowej tego obiektu.

Ponadto może prowadzić do nadmiernego rozrastania się interfejsu obiektu, z poziomu którego dostępne są operacje.

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]

Object-Oriented Programming: An Objective Sense of Style (ang.)

Przypisy

  1. Eric Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns. Gliwice: Helion, 2005, s. 289. ISBN 83-7361-792-2.
  2. Pragmatyczny programista. Od czeladnika do mistrza. Warszawa: WNT, 2002, s. 160-163. ISBN 83-204-2672-3.
  3. Professor Karl Lieberherr: Law of Demeter (ang.). [dostęp 2010-01-02].