Tra*_*svi 5 java collections swing model jlist
我当前正在编写一个程序,该程序在GUI方面和数据存储方面之间有很多代码重复,并且我想知道我提出的解决方案是否遵循可接受的设计原则。
基本上,我有一些数据对象,它们有一个包含更多信息的列表。然后,GUI显示该对象,还有一个JList,显示数据对象列表中的所有信息。在GUI中,用户可以在对象列表中添加或删除信息,这在JList中是直观体现的。
但是,这导致我不得不分别维护GUI JList和对象List:
private void addInformation(String s) {
this.listmodel.addElement(s);
this.dataObject.getList().add(s);
}
Run Code Online (Sandbox Code Playgroud)
(显然,这是一个非常简单的示例,但您明白了)。这也意味着我占用两个列表的内存是原来的两倍。创建一个既实现ListModel又实现List接口的类,然后只需要更新单个组合的list / listmodel,对我来说是否可以接受?我仍在念大学,我想使这个项目在他人的可维护性和坚持最佳实践方面达到我所能做的最好。
您的 GUI 不应包含有关数据模型状态的信息。最好将其分离为模型-视图-控制器 (MVC) 设计。控制器负责对象创建并相应地更新模型和视图。您的实际视图应该只负责通过向其传递参数来显示屏幕显示。这样,视图和模型不需要彼此了解任何信息,并且只有一个数据模型。
如果您必须保持两个列表一致,那么您的设计就有问题,并且可能会在代码中引入更多错误。
有关 MVC 详细信息,请参阅此处。