Содержание
- 2. Принцип инверсии зависимости Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и
- 3. Разбиение на слои В любой хорошо структурированной объектно-ориентированной архитектуре можно выделить ясно очерченные слои, на каждом
- 6. Инверсия владения
- 7. Зависимость от абстракций Не должно быть переменных, в которых хранятся ссылки на конкретные классы. Не должно
- 8. Простой пример принципа DIP
- 9. public class Button { private Lamp lamp; public void Poll() { if ( /* какое-то условие
- 11. const byte TERMOMETER = 0x86; const byte FURNACE = 0x87; const byte ENGAGE = 1; const
- 13. void Regulate(Thermometer t, Heater h, double minTemp, double maxTemp) { for(;;) { while (t.Read() > minTemp)
- 14. Принцип разделения интерфейсов (ISP) Клиенты не должны вынужденно зависеть от методов, которыми не пользуются
- 15. Загрязнение интерфейса public interface Door { void Lock(); void Unlock(); bool IsDoorOpen(); } public class Timer
- 17. Разделение клиентов означает разделение интерфейсов public class Timer { public void Register(int timeout, int timeOutId, TimerClient
- 18. Принцип разделения интерфейсов (Interface Segregation Principle) Клиенты не должны вынужденно зависеть от методов, которыми не пользуются
- 19. Разделение путем делегирования
- 20. public interface TimedDoor : Door { void DoorTimeOut(int timeOutId); } public class DoorTimerAdapter : TimerClient {
- 21. Разделение путем множественного наследования
- 22. public interface TimedDoor : Door, TimerClient { }
- 23. Пользовательский интерфейс банкомата
- 26. public interface Transaction { void Execute(); } public interface DepositUI { void RequestDepositAmount(); } public interface
- 27. public class DepositTransaction : Transaction { private DepositUI depositUI; public DepositTransaction(DepositUI ui) { depositUI = ui;
- 28. public class TransferTransaction : Transaction { private TransferUI transferUI; public TransferTransaction(TransferUI ui) { transferUI = ui;
- 30. Скачать презентацию