Всякий раз, когда я вижу статьи о Законе Деметры, автор никогда, кажется, не дает убедительного примера того, как подчиняться этому закону. Они все объясняют, что это такое, и показывают пример нарушения закона, но это легко.
Вероятно, есть много способов подчиниться этому закону (хороший дизайн и планирование - одно), но в очень простых выражениях это будет способ подчиниться ему?
Скажем, у меня есть класс с этими свойствами:
public class Band {
private Singer singer;
private Drummer drummer;
private Guitarist guitarist;
}
Я где-то в программе, и у меня есть экземпляр этого класса Band
, и я хочу, чтобы имя гитариста, что я обычно вижу, это что-то вроде:
guitaristName = band.getGuitarist().getName();
Это не кажется слишком плохим, потому что он не слишком глубоко в цепи, но закон Деметры говорит, что, возможно, это должно быть сделано следующим образом:
guitaristName = band.getGuitaristName();
и мой класс Band
имеет метод:
public String getGuitaristName() {
return guitarist.getName();
}
Это как вы должны подчиняться закону?
Спасибо.