Если вы говорите о Законе Деметры как в «не называйте соседей соседями», вы можете делегировать его другим методам, которые делают то, что вы хотите.
Из вашего примера, я думаю, вы хотите сбросить значение производительности или что-то в этом роде. Вы можете изменить пример кода так, чтобы он по своей сути был связан по цепочке:
Category cat = new Category();
cat.resetPerf();
Код был бы чем-то похожим на это:
public class BigPerformance
{
//constructors 'n stuff
public static decimal DEFAULT;
public decimal Value {get; private set;}
public void reset() {
Value = BigPerformance.DEFAULT;
}
}
public class Performance
{
//constructors 'n stuff
private BigPerformance BigPerf {get; set};
public reset() {
BigPerf.reset();
}
}
public class Category
{
// constructors 'n stuff
public Performance Perf {get; private set;}
public resetPerformance() {
Perf.reset();
}
}
Таким образом, классу Category
не нужно знать, как сбросить значение, если значение по умолчанию является чем-то другим или его тип изменится в будущем.
Лично, если риск для изменений низок, я бы пошел на ответ Джухарра .