Đây là một trong nhiều lý do để che giấu đằng sau các biến setter/getter cặp. Sau đó, trong setter bạn có thể thông báo cho người nghe của bạn rằng biến này đã được sửa đổi theo cách thích hợp. Như những người khác đã nhận xét, không có cách nào được xây dựng để thực hiện chính xác những gì bạn muốn, bạn cần tự mình thực hiện nó.
Hoặc Benjamin mang đến một mẫu thú vị, được gọi là mẫu Decorator, có thể hữu ích cho bạn nếu mã không được sửa đổi. You can look up more info at wikipedia
Ý tưởng là tạo một trình bao bọc tương thích xung quanh một đối tượng. Cho phép nói đối tượng của bạn trong câu hỏi là loại MyClass.
class MyClass{
publc void doFunc(){...}
}
class MyLoggedClass extends MyClass{
MyClass myObject;
publc void doFunc(){
//Log doFunc Call
myObject.doFunc();
}
}
thay vì
MyClass object = new MyClass();
Bạn sẽ sử dụng
MyClass object = new MyLoggedClass(new MyClass());
Bây giờ còn lại của bạn của mã sẽ sử dụng đối tượng theo bình thường, ngoại trừ việc mỗi lần gọi hàm sẽ được đăng nhập, hoặc thông báo , v.v.
Như bạn sẽ thấy trong wikipedia, điều này thường được thực hiện thông qua giao diện mà lớp học trong câu hỏi được kế thừa từ, nhưng điều này có thể không thực hiện được trong trường hợp của bạn.
Nguồn
2013-03-15 13:40:44
Bạn có muốn làm điều này với mục đích gỡ lỗi hoặc làm bạn muốn sử dụng điều này trong mã sản xuất? –
trong mã sản xuất – Sinigami