Zasada Otwarte / Zamknięte Zasadyjest najprostszą zasadą projektowania w świecie rozwoju oprogramowania. Wskazuje nam, jak zbudować stabilny i elastyczny system.
Definicja:
Jednostka oprogramowania, taka jak klasa, moduł i funkcja, powinna być otwarta na rozszerzenia i zamknięta na modyfikacje.
Znaczenie zasady otwierania i zamykania polega na tym, że jednostka oprogramowania powinna być rozszerzana w celu wprowadzenia zmian, a nie poprzez modyfikację istniejącego kodu.
Zasada otwierania i zamykania to zasada, która ogranicza bieżący rozwój i projektowanie dla przyszłych rzeczy jednostki oprogramowania.
Uwaga: Zasada otwierania i zamykania jest otwarta na rozszerzenia i zamknięta na modyfikacje. Nie oznacza to, że nie będą dokonywane modyfikacje. Zmiany w modułach niskiego poziomu muszą być powiązane z modułami wysokiego poziomu, w przeciwnym razie będzie to izolowany i bezsensowny fragment kodu.
Znaczenie zasady otwierania i zamykania:
- Wpływ zasad otwierania i zamykania na testowanie
Zasada otwierania i zamykania polega na tym, aby oryginalny kod testowy nadal mógł działać normalnie, musimy tylko przetestować rozszerzony kod.
- Zasada otwierania i zamykania może poprawić ponowne wykorzystanie
W projektowaniu obiektowym, cała logika jest łączona z logiki atomowej, zamiast wdrażać logikę biznesową w klasie niezależnie. Tylko w ten sposób kod może być ponownie wykorzystywany. Im mniejsza granularność, tym większa możliwość ponownego wykorzystania.
- Zasada otwarte-zamknięte może poprawić utrzymanie
- Wymagania dotyczące rozwoju obiektowego
Jak stosować zasadę otwierania i zamykania:
Po pierwsze, ogranicz rozszerzenie poprzez interfejs lub klasę abstrakcyjną, ogranicz rozszerzenie granicy i nie pozwalaj na publiczne metody, które nie istnieją w interfejsie lub klasie abstrakcyjnej;
Po drugie, staraj się używać interfejsów lub klas abstrakcyjnych dla typów parametrów i obiektów referencyjnych zamiast klas implementacyjnych;
Po trzecie, warstwa abstrakcji powinna być utrzymywana tak stabilnie, jak to możliwe, po jej potwierdzeniu nie są dozwolone modyfikacje.
Enkapsulacja zmian ma dwa znaczenia:
Po pierwsze, enkapsuluj te same zmiany w interfejsie lub klasie abstrakcyjnej;
Po drugie, enkapsuluj różne zmiany w różnych interfejsach lub klasach abstrakcyjnych. Dwie różne zmiany nie powinny występować w tym samym interfejsie lub klasie abstrakcyjnej.
Przykłady
Przykład, otwieranie i zamykanie drzwi ręcznie.

Jeśli pojawi się nowe zapotrzebowanie, konieczne jest zwiększenie funkcji otwierania i zamykania szuflady ręcznie. W kodzie musisz dodać klasę Szuflada i jednocześnie zmodyfikować klasę Ręka.

Podążając za przykładem zasady otwierania i zamykania OCP, otwieranie i zamykanie drzwi ręcznie zależy od interfejsu, a konkretna klasa implementacyjna wdraża ten interfejs.

Gdy konieczne jest zwiększenie liczby rąk do otwierania i zamykania lodówki, klasa lodówki wdraża ten interfejs bez modyfikacji oryginalnej klasy Ręka i interfejsu.

Więcej zasobów dotyczących programowania obiektowego
Ten post dostępny jest również w Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文