Hãy bắt đầu với Wikipedia:Luật Demeter là gì?
Nhiều chính thức, Luật của Demeter cho các chức năng đòi hỏi một phương pháp m của một đối tượng O chỉ có thể gọi các phương pháp của các loại sau đây của các đối tượng:
- O tự
- tham số m của
- Bất kỳ đối tượng được tạo/instantiated trong m
thành phần trực tiếp 63.210- O của các đối tượng
- Một biến toàn cầu, truy cập bằng O, trong phạm vi của m
Quy tắc 1:
public class ClassOne {
public void method1() {
method2();
}
public void method2() {
}
}
Quy tắc 2:
public class ClassOne {
public void method1(ClassTwo classTwo) {
classTwo.method2();
}
}
class ClassTwo {
public void method2() {
}
}
Quy tắc 3:
public class ClassOne {
public void method1() {
ClassTwo classTwo = new ClassTwo();
classTwo.method2();
}
}
class ClassTwo {
public void method2() {
}
}
Quy tắc 4 (nhờ @juharr):
public class ClassOne {
private ClassTwo classTwo;
public void method1() {
classTwo = new ClassTwo();
classTwo.method2();
}
}
class ClassTwo {
public void method2() {
}
}
Quy tắc 5:
?
bất cứ ai có thể giúp tôi với Quy tắc 5?
Và không phải luật Demeter ngụ ý rằng chuỗi là xấu?
User.getName().getLastName();
Điều này dẫn đến kết nối cao.
Không phải "Kể, đừng hỏi" một nguyên tắc tương tự?
Vì vậy, đây là tất cả mọi thứ? Tôi có sai về điều gì đó không? Làm thế nào bạn có thể tuân theo Luật Demeter?
Có, về cơ bản "demeter" có thể được đọc để nói: chuỗi là xấu. Bạn không nhận được một cái gì đó để có được một cái gì đó từ đó để làm một cái gì đó về điều cuối cùng. – GhostCat
Quy tắc 4 là nếu 'ClassOne' có một trường riêng (thành phần) của kiểu' ClassTwo', thì bạn có thể gọi các phương thức trên trường đó từ phương thức của bạn trong 'ClassOne'. – juharr
@juharr Cảm ơn! – Anonymous