我正在创建一个文本编辑器。我的文本框控件是名为TextBox
的{{1}}的子类。我的主要表单Editor
的实例为MainForm
。
当MainForm想要加载文本文档时,它会调用Editor
。 Editor.LoadDocument(string path)
来电Editor.LoadDocument
。
保存时会发生同样的事情:Document.Load(string path)
。
似乎MainForm --> Editor.SaveDocument --> Document.Save
在这里不必要地充当中间人,所以我想让Editor
直接访问MainForm
:Document
。 editor.Document.Load(path)
仍会创建并维护Editor
;它只是提供直接访问它。
请注意,这会创建双向关联:Document
会有Editor
而Document
会有Document
(Editor
使用{{1} }并订阅Document
)。
我有两个问题:
这是好设计吗?
当应用程序退出时,双向关联是否会创建与垃圾收集有关的任何减速?
答案 0 :(得分:2)
您需要阅读有关模型的信息,例如Model-View-Controller。
通常,UI应该直接在模型上激活操作(在您的情况下为Document
),然后视图(Editor
)应该订阅事件并充当观察者。
答案 1 :(得分:0)
让编辑器处理它的编辑任务是件好事。
回传给主要形式灵魂的更好方式是在编辑器中创建主要表单可以订阅的事件
就垃圾收集而言,如果控件正在引用彼此只是制造商确定当你想摆脱它们时你实际上可以摆脱它们并且确实摆脱两者。