我读这个和这个,结果发现,在课堂上B
我需要保存到类的引用A
,当东西在发生类B
,我们执行由类的接口中定义的方法A
工具。好吧,我明白了。我以不同的方式使用接口来调用回调:
interface IHelper {
void onActionDone ();
void onActionFailed ();
}
public class Helper implements IHelper {
public Helper (Param param) {
// here we do what Helper class intended to do
// ...
// now call the any of callbacks
if(everything == OK) {
onActionDone();
} else {
onActionFailed();
}
}
@Override
public void onActionDone() {}
@Override
public void onActionFailed() {}
}
public class MainClass () {
new Helper(message) {
public void onActionDone () {
// here we can do anything we want after Helper will done its functions
}
public void onActionFailed () {
// or not done
}
}
}
我发现这种方式更具可读性,更容易理解,但是不确定这是否是不好的做法。因此,我可以随意走这条路吗?
所以我可以随意走这条路吗?
这种方式不是很正确。
您在说的是称为Observer或Subscriber
/ Publisher
模式。
简而言之:订户想要从发布者接收事件(杂志问题),因此他将发布事件通知(订阅)。之后,发布者将发生的事件通知订阅者。
在您的代码段中,发布者为Helper
,订阅者为MainClass
。发布者具有一种订阅形式IHelper
:
public class Helper {
IHelper mSubscriber;
...
void setSubscriber(IHelper subscriber) {
this.mSubscriber = subscriber;
}
...
}
订阅者应填写表格,即implements IHelper
,并将其自身通知发布者:
public class MainClass implements IHelper {
Helper mPublisher;
...
void someMethod() {
mPublisher.setSubscriber(this);
}
...
}
现在,当发行人发行新杂志时,订户将收到有关以下内容的通知:
public class Helper {
...
void newMagazineIssued() {
mSubscriber.onActionDone();
}
void newMagazineFailed() {
mSubscriber.onActionFailed();
}
...
}
一个侦听器示例:
如果上述说法让您有些困惑,请考虑Button
您刚刚在中初始化了一个Activity
。该按钮充当发布者,而Activity
充当订阅者。该Activity
希望因此订阅与事件当按钮被用户(发布新杂志)单击通知,setOnClickListener()
在View.OnClickListener
传递给方法的参数是认购表格。的Activity
(订户)填充的形式,通过实现接口和重写onClick()
方法,并传递的形式向法(订阅)。发生点击时,Activity
系统会通知。
问题内容: 我读这个和这个,结果发现,在课堂上我需要保存到类的引用,当东西在发生类,我们执行由类的接口中定义的方法工具。好吧,我明白了。我以不同的方式使用接口来调用回调: 我发现这种方式更具可读性,更容易理解,但是不确定这是否是不好的做法。因此,我可以随意走这条路吗? 问题答案: 所以我可以随意走这条路吗? 这种方式不是很正确。 您在说的是称为Observer或/ 模式。 简而言之:订户想要从发布
问题内容: 我能够使用三个链接来组合一个简化的完整History.js示例,以从整个页面加载内容片段,而无需更新页面和更新浏览器历史记录。 这是相关的代码段- 完整的工作示例在此处http://jsfiddle.net/PT7qx/show 我想知道这是否正确。以前的版本可以使用#url绑定到事件。我没有看到使用此最新版本将事件绑定到url的任何示例,因此我使用了.on()click事件来调用Hi
关于SpringWebFlux的小问题,以及如何“链接”http调用。 通过一个具体的例子,这里是一个非常简单的SpringMVC示例,带有一个rest模板。 在这个片段中,我们看到了非常简单的内容。仅初始化一个rest模板。 超文本传输协议请求有效载荷对象的构造。 使用所构建的对象来查询第一外部web应用API以获得响应。 重要的是,需要第一个HTTP调用的响应来进行第二个HTTP调用。它们只能
问题内容: 我知道我不应该改变输入,而应该克隆对象来改变它。我遵循在redux入门项目上使用的约定,该约定使用: 用于添加项目-我使用了点差将项目追加到数组中。 用于删除我使用的: 但这改变了输入状态对象-即使我要返回一个新对象,也禁止这样做吗? 问题答案: 不,永远不要改变你的状态。 即使您要返回一个新对象,您仍然会污染旧对象,而您从来不希望这样做。这使得在旧状态与新状态之间进行比较时会出现问题
我创建了一个接口,以便可以在对话和片段之间进行通信。 目标:当用户从对话框中选择任何内容时,应将其显示在文本视图中。 在这个界面中,我创建了一个界面方法,在主活动中调用,并传递用户在对话框中选择的值。与用户选择的值一起,在我的片段中,我创建了一个方法,将文本视图设置为该值。然而,每当我调用该方法时,它总是返回null。 我对日志进行了大量测试,发现通过我的方法传递的值不是空的,一切似乎都按照我想要