Java文档状态模式?

时间:2009-08-24 16:13:40

标签: java design-patterns swing

我是Java编程的新手,我想知道是否有一些常见的做法来管理打开文档的状态(当前状态保存或脏),保存文档,打开,创建新文档等等。你怎么看待这个?

现在我有我的小Swing应用程序,并且有打开和关闭文档以及创建新文档的操作,但我不知道如果用户是否已保存文件如何管理(我需要这个来检查用户是否想要在处理当前工作时创建新的或打开现有的。)

这有什么模式吗?所有的建议都非常受欢迎,因为我还在学习如何使用Java游泳。

3 个答案:

答案 0 :(得分:3)

据我所知,Swing没有管理文档状态的机制。你必须自己做。但是,这不是必须编写的代码,如果你的应用程序中有几个不同的文档,你可以把它们放在一个抽象的基类中。

已经概述了基本方法:在文档数据结构中只有一个“脏”标志。你应该考虑写下你的哪些操作,如“创建”,“打开”,“保存”,“关闭”应该修改和评估这个标志。我建议使用state chart(不一定是UML state machine variant)作为指定此内容的工具。

如果您需要更复杂的功能,尤其是撤消/重做,请查看Memento pattern。使用此模式时必须编写的大多数代码特定于应用程序及其数据结构(即您为管理文档而创建的类型),因此很难无法有效地概括它并将其放入框架中像Swing或RCP。

答案 1 :(得分:2)

你有一个名为isDirty的布尔变量,从false开始。

每次对文档进行更改时,代码都会将其设置为true。

所有其他程序功能(打开,保存,新菜单e.t.c)检查此布尔值的状态 在做任何其他事情之前。

这样他们也会出现熟悉的对话框:你确定要退出,放弃 你的变化e.t.c

我在现实世界的Swing Apps上多次使用过

答案 2 :(得分:0)

您可以考虑使用文档的临时版本(即打开主文档,但在编辑它时会创建临时文档)。在这种情况下,打开同一文档的另一个用户将看到原始文档。据我所知,这是常见的做法..

但我不确定你是否想保持如此复杂的行为......