-
Notifications
You must be signed in to change notification settings - Fork 0
/
Design principles.txt
16 lines (15 loc) · 1.95 KB
/
Design principles.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Принципы проектирования:
1) Выделите аспекты приложения, которые могут изменяться, и отделите их от тех, которые всегда остаются постоянными.
- Переменные аспекты необходимо инкапсулировать, чтобы в дальнейшем их можно бы было изменять и расширять без воздействия на
постоянные составляющие.
2) Программируйте на уровне итерфейсов, а не уровне реализации.
3) Отдавайте предпочтенее композиции перед наследованием.
4) Стремитесь к слабой связанности взаимодействующих объектов.
- Если 2 объекта могут взаимодействовать, не обладая практически никакой информации друг о друге, такие объекты называются
слабосвязанными.
5) Классы должны быть закрытами для изменения, но открытыми для расширения.
- Звучит противоречиво, но существуют приемы, обеспечивающие возможность расширения кода без его модификации.
- Однако повсеместное применение принципов открытости/закрытости неэффективно и расточительно, оно приводит к созданию сложного
и малопонятного кода.
6) Код должен зависеть от абстракций, а не от конкретных классов.
- Или по-другому принцип инверсии зависимостей.