我目前正在处理一些GUI代码,其中有一个表,它的行与某个对象相对应,比如Person对象。当表初始化时,它用它所知道的Person对象填充表,比如Bob、Andy和Tom。行项的其余部分(row.getItem())为空。在这个特定的GUI框架中,不能突出显示/选择getItem()返回null的行,但是在我的特定用例中,我希望允许这个功能。
因此,在初始化表时,我希望将Bob、Andy和Tom后面的行设置为表示空/空人(本身未初始化)的Person对象,因此可以使用空对象模式。由于Person类使用fluent构建器模式来构造Person实例,所以模式结合在一起,所以我考虑将两者结合起来如下:
for (rows in table) {
if (row.getItem() == null) {
row.setItem( Person.PersonBuilder().nullObject().build() );
}
}我正在寻求关于这一选择的优点的反馈/建议,如果这种方法有缺陷,欢迎选择其他方法。
发布于 2015-02-01 05:02:51
使用您的方法,其中一个问题将是检查一行是否包含空对象。我会使用一个常量对象,例如Person.NullObject (其中它是一个静态值),一个优点是,您可以始终通过检查row.getItem == Person.NullObject来检查该行是否有值,但是如果使用这种方法,则必须确保Person.NullObject的字段不会通过就地编辑进行修改。
https://softwareengineering.stackexchange.com/questions/269367
复制相似问题