正确设计代码编辑器应用程序

我正在从事个人项目,基本上是一个代码编辑器。想象一下标准的文件菜单,包括菜单项New,Open,Save,Save As,Save All,Close,Close All。 我坚持正确的设计。目前我有: Document类,表示文档 - 代码编辑控件,选项卡栏中的相应选项卡以及各种属性,如Caption,Filename,IsModified等。 一个Documents类,代表所有打开的文档。包含New,Open(FileName)等方法...... 问题是我无法弄清楚哪个类/菜单命令负责哪些任务。 例如,使用File-> New菜单命令很简单 - 调用Documents.New就是这样。 但是File-> Open呢? Documents.Open方法期望filename作为参数。所以在调用这个方法之前我需要打开一个文件选择对话框,让用户选择文件并为每个文件调用Documents.Open(FileName)。这个支持代码的最佳位置在哪里,在菜单命令中,重写Documents.Open并将其放在那里? 与保存操作相同。哪个负责储蓄?是Document类使用Document.Editor.SaveToFile(FileName)还是更好地在Document类中创建Save方法?在中间的某个地方还需要询问用户是否要保存当前文档... 我被卡住了。有任何想法吗? 编辑:编程语言是Delphi。     
已邀请:
恕我直言,你在Documents类中添加了太多的职责。文档类的唯一责任应该是维护具有一些相关功能的文档集合(例如,处理同一文档的多个实例,检查所有文档是否已关闭,计算子项等) 打开文档甚至创建新文档(例如,如果必须选择格式的话)是单独的操作,最终会生成一个新文档,然后将其添加到Documents类中。在我看来,在准备交出Document对象之前,你甚至不应该与Documents类进行交互。 我希望您有一些类来表示UI以及与用户交互以获取创建或打开文件所需的所有信息。你应该从那里处理一切。否则,你会用UI相关的东西污染你的模型。     
您需要一个Singleton对象(DocumentManager)来管理所有文档操作。这将具有以下功能: 获取(IDLIST) GETNEW 保存(文档列表) 刷新 等等...     

要回复问题请先登录注册