一尘不染

如何为变量创建更改侦听器?

java

假设我使用statement定义了一些变量int someVariable;。代码运行时,变量的值会更改。

如何跟踪此变量的变化?我如何实现某些行为类似于onSomeVariableChangedListener的侦听器?

我还需要知道何时在一个页面中执行了其他方法,以便可以在另一个类中设置侦听器。


阅读 227

收藏
2020-09-08

共1个答案

一尘不染

这是将变量隐藏在 setter / getter
对后面的众多原因之一。然后,在设置器中,您可以通知您的侦听器此变量已通过适当的方式进行了修改。正如其他人所评论的那样,没有内置的方法可以精确地完成您想要的事情,您需要自己实现它。

另外,本杰明会提出一个有趣的模式,称为Decorator模式,如果无法修改相关代码,该模式可能对您有用。您可以在Wikipedia上查找更多信息。

这个想法是围绕对象构建一个兼容的包装器。假设您所讨论的对象的类型为MyClass。

class MyClass{
   publc void doFunc(){...}
}

class MyLoggedClass extends MyClass{
    MyClass myObject;

    publc void doFunc(){
        //Log doFunc Call

       myObject.doFunc();

    }
}

代替

MyClass object = new MyClass();

你会用

MyClass object = new MyLoggedClass(new MyClass());

现在,您的其余代码将按常规使用object,不同之处在于每个函数调用都会被记录或通知,等等。

正如您将在Wikipedia中看到的那样,这通常是通过相关类继承自的接口来完成的,但是在您的情况下可能无法实现。

2020-09-08