|
|
1
1
Java bean的要点是,系统(GUI Builder,特别是)可以检查Java bean并配置它,而不必对该组件有任何先前的知识。 虽然这相当酷,但它只在这种特定的情况下才真正有用,而且这些天注释的效果会更好。 所以他们使用绑定属性的原因仅仅是为了支持这种嵌入式的GUI组件技术,而且我不希望它胜过事件,除非您需要支持反射式的GUI构建系统。 对@mike啮齿动物的反应 假设您允许您的用户创建一个您将控制的类。这个类有一个“主”类,可以处理几个事件。 通常情况下,您的用户会这样做: class UserClass(someClass) {
void mainMethod() {
someClass.addEventListener(new EventListener() {
public void eventsHappen(Event e){
event1(e)
}
}
}
someClass.addDifferentEventListener(new DifferentEventListener() {
public void eventsHappen(DifferentEvent e){
event2(e)
}
}
}
}
public void event1(Event e) {
//java code for event 1
}
public void event2(DifferentEvent e) {
// java code for event 2
}
}
不管怎样,你明白了。当然,您假定这个类是在某个地方注册的——可能在XML/config文件中。您读取它,实例化它并执行mainmethod(由协议或接口定义),它注册自己并开始调用事件处理程序。 现在,您可以通过注释来完成相同的事情:(您可能认识到这个模式——JUnit对测试进行注释的方式就差不多了。) class UserClass() {
@Event1
void event1Method(Event e) {
event1's code
}
@Event2
void event2Method(AnotherEvent e) {
event2's code
}
}
这是更直接的前面和删除大多数样板文件,它也删除了协议或接口的需要,注释是更明确的定义和独立的。(如果您想检查传递到方法中的参数,实际上甚至不需要事件注释,但是dragons位于这个一般的方向上)。 您仍然需要在某个地方注册类,但这次您只需扫描每个方法以查找事件注释并自己注册它们。由于只需要几行代码就可以读取和处理这样的类,为什么要将此模式限制为单元测试呢? 另一件事我发现非常整洁,我用这个模式,Groovy类,“插入”到我的Java程序。因为我是在一个给定的目录中编译所有类,所以扫描注释是很简单的。对用户的影响是他插入(或编辑)一个正确注释的groovy文本文件,我的代码立即编译、集成并开始调用它们的事件处理程序。 |
|
|
2
0
我认为JavaBeans规范的设计考虑了通用对象处理。例如,将JavaBean放到一个IDE中,并使用可视化属性编辑器来配置它。在这种情况下,IDE将使用常规的PropertyChangeEvent等。 或者,如果要将相同的命名属性从bean复制到另一个bean…这是bean使用的另一种情况(beanutils类)。 但是,如果你计划做一些具体的事情,就像诺埃尔·昂说的那样,我建议你打字要有力。 |
|
|
3
0
JavaBeans是一种规范。它将绑定属性定义为其修改导致发出通知的属性,而PropertyChangeEvent是已批准的通知实体。 所以假定的JavaBeans规范bean编辑器应该监听propertyChangeEvents。除了使用这个规范的必要性之外,我自己也不会使用它。 |
|
|
MWRazer · 在类-C上具有作为属性的函数++ 3 年前 |
|
|
Vopel · 添加隐藏的属性,除非该属性具有值 3 年前 |
|
Shane Amare · 构造函数和对象构造之间的区别是什么? 3 年前 |