在询问之前,这个主题可以是议论性的,这里要求的响应只是指导性的,而不是明确的或硬性和快速的规则答案。话虽如此,我希望如果给出富有洞察力的回复,那么保留这个帖子是值得的,即使在发布了足够好的信息后它就会被关闭。
问题:随着JavaFX属性的出现,以及可以在JavaFX应用程序之外使用它,在将JavaFX属性合并到数据对象中时需要考虑哪些要点?
考虑以下示例:
class BasicPersonBean
{
private String name;
private PropertyChangeSupport propChgSup;
BasicPersonBean(String name)
{
this.propChgSup = new PropertyChangeSupport(this);
this.name = name;
}
BasicPersonBean() { this(null); }
public String getName() { return this.name; }
public void setName(String newValue)
{
String oldValue = this.getName();
this.name = newValue;
this.propChgSup("name", oldValue, newValue);
}
}
class PersonBeanUsingJavaFXProperty
{
private StringProperty name;
private PropertyChangeSupport propChgSup;
BasicPersonBean(String name)
{
this.propChgSup = new PropertyChangeSupport(this);
this.name = new SimpleStringProperty(name);
}
BasicPersonBean() { this(null); }
public StringProperty nameProperty() { return this.name; }
public String getName() { return this.name.get(); }
public void setName(String newValue)
{
String oldValue = this.getName();
this.name.set(newValue);
this.propChgSup("name", oldValue, newValue);
}
}
这两个类都提供非常相似的功能。后者PersonBeanWithJavaFXProperty更像是“最终用户应用程序就绪”,例如JavaFX应用程序。虽然JavaFX确实有适配器类来帮助连接前一个类BasicPersonBean。
能够将双向绑定属性准备好连接到后一类的能力非常方便,更不用说省时了。
然而,总会有折衷。由于JavaFX属性相对较新,而且记录较少(与完善/成熟的标准/库/惯例相比),这些权衡是什么?
作为使用JavaFX Property的负面消息,陈述明显的权衡是处理和内存占用。但是,有一些方法可以通过使用半/全延迟加载来设置这些属性来抵消它。
另一个是使用JavaFX属性测试复杂性,是否可以就此方面提供一些解释或警示说明?在JavaFX属性教程中,讨论了内存占用和处理,但未提及测试方面。
总之,可以在这里编译一份优缺点列表,以帮助程序员做出决定 何时使用'非JavaFX属性'和'JavaFX属性'?
再次强调这只是教育和/或信息主题,并且没有或不应该是一个明确的答案。只需要考虑并做出明智的选择。
最后,打算添加'JavaFX Property'标签,但由于(我)声誉不足,它不存在且无法创建。如果'JavaFX Property'标签可以由其他人添加,请这样做,因为它比'javafx'更加相关和简洁。