Nếu bạn đang nói về Luật Demeter như trong "đừng gọi những người hàng xóm của hàng xóm", bạn có thể ủy thác nó cho các phương pháp khác để làm những gì bạn muốn.
Từ ví dụ của bạn, tôi đoán bạn muốn đặt lại giá trị hiệu suất hoặc thứ gì đó. Bạn có thể sửa đổi các mã ví dụ vì vậy họ đang bị xích vốn thay vì:
Category cat = new Category();
cat.resetPerf();
Mã này sẽ là một cái gì đó tương tự như thế này:
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();
}
}
Bằng cách đó lớp Category
không cần phải biết làm thế nào để thiết lập lại giá trị trong trường hợp giá trị mặc định là một cái gì đó khác hoặc loại của nó được thay đổi trong tương lai.
Cá nhân nếu rủi ro thay đổi thấp, tôi sẽ thay thế cho số juharr's answer.
Điều này không chính xác; xem câu trả lời của Chris S http://stackoverflow.com/questions/2666930/how-to-modify-code-so-that-it-adheres-to-the-law-of-demeter/2667019#2667019 – Spoike
Vị trí của tài sản là một phương pháp. –