Закон наименьшего знания (LoD)
Закон наименьшего знания или law of Demeter (Закон Деметры)
это правило хорошего тона при проектировании объектно ориентриованных программ,
техника для ослабления связанности кода.
- Каждый модуль должен обладать ограниченным знанием о других модулях:
только о модулях, которые имеют «близкое» отношение к данному модулю.
- Каждый модуль умеет разговаривать только со своими друзьями, и не разговаривает с незнакомцами.
- Обращаться только непосредственно к друзьям, а не к друзьям друзей
Допустим у нас есть объект O, у него есть метод m.
Закон Деметры требует, чтобы в методе m мы пользовались услугами только следующих объектов:
- самого O и его полей;
- параметров, переданных в m;
- любых объектов, созданных в m;
Применительно к AS3 этот закон можно сформулировать как "Правило одной точки".
Например:
public class O{ private var _b:B; private var _c:C; public function m(a:A):void{ a.m(); //не нарушает закон _b = new B(); _b.m(); //не нарушает закон a.getC().m(); // нарушает закон _c = a.getC(); _c.m(); // тоже нарушает закон } }
Если Вы хотите, чтобы собака побежала, глупо командовать ее ногами, лучше отдать команду собаке, а она уже разберется со своими ногами сама.
Достоинства:
Снижает связность, в результате получается код, который легче сопровождать и отлаживать.
Недостатки:
Заставляет писать множество методов-оберток, которые только лишь делегируют работу кому-то еще. Классы становятся более громоздкими.
Всего комментариев 7
Комментарии
06.01.2012 03:25 | |
Почитай еще про SOLID - должно понравиться
|
06.01.2012 15:50 | |
Тут все как с бюрократией:
- либо вы приходите в контору, приносите паспорт и говорите, что нужно оформить, а вам называют дату, когда прийти за документом. Если нужны внешние справки, вы приносите их этому же товарищу, зная в какие часы он работает. - либо посылают в пешее путешествие по кабинетам этой же конторы, причем каждый начальник требует наличие справок от начальника из соседнего кабинета, причем все работают в разное время и не всегда могут объяснить где именно брать необходимую справку, хотя брать ее надо в этой же конторе. Таким образом вы очень глубоко проникаетесь структурой и принципами делопроизводства конторы, что не может не радовать |
|
Обновил(-а) expl 06.01.2012 в 15:55
|
12.01.2012 01:01 | |
В противовес правилу одной точки, есть интересный "Fluent принцип" .
|
12.01.2012 13:19 | |
Цитата:
В противовес правилу одной точки, есть интересный "Fluent принцип" .
|
12.01.2012 15:51 | |
fluent interface, кстати, не нарушает закон Деметры
это цепочка вызовов разных методов одного объекта, просто записанная в одну строку |
13.01.2012 00:36 | |
Но назвать его выполняющим "правилом одной точки" некомильфо.
|
Последние записи от artcraft
- Что такое entity framework (12.09.2012)
- Подводные камни Dictionary (04.09.2012)
- Волшебное превращение Object --> Class (04.09.2012)
- Инверсия контроля (14.04.2012)
- Loose coupling (10.01.2012)