在以下情况下遵循设计模式

时间:2014-06-04 10:35:34

标签: c++ c design-patterns webkit gtk

我正在创建一个基于选项卡的C ++应用程序,使用GTK +工具包和Webkit进行学习。我创建了以下文件

  • Main.cpp =>申请入境点
  • MainWindow.cpp / .h => MainWindow创建工具栏对象,Notebook,Statusbar
  • Toolbar.cpp / .h =>工具栏项目,如后退,前进,urlbar,停止/刷新,
  • NotebookContainer.cpp / .h =>用于创建新标签等
  • TabWebView.cpp / .h =>用于创建选项卡(标签+关闭按钮),Web视图等。

现在我想在工具栏和TabView类之间进行通信。因此,当工具栏上发生任何事件时,我可以在webview.cpp中执行操作,并从webview执行某些事件触发器,我可以在工具栏上执行所需操作(如启用/禁用停止按钮)

在这种情况下我应该遵循哪种设计模式?

注意:GTK +是基于c的库。

2 个答案:

答案 0 :(得分:0)

我想建议您提出错误的问题。我建议你问一下解决问题的最惯用方法是什么,而不是询问要遵循什么样的设计模式。

我必须解决的设计失败往往来自于一个年轻的编码器,他的方法是“我可以在这里使用什么样的设计模式?"或者"我怎样才能使用更多的设计图案"

研究设计模式对于提供讨论设计的词汇非常有用,它们可用于鼓励和告知您的设计选择,但您的设计方法应始终是“最简单,最干净,最有效,最恰当的”接近这里"。有时候,这个问题的答案将是一种设计模式。有时它会成为设计模式的一部分,有时它会变得更简单 - 通常是您正在使用的语言或库中的习语。

我没有做很多GUI编程,所以我对你的具体问题无能为力。对于您提出的问题,听起来您想要使用GTK的信号/插槽框架。或者,如果您想熟悉boost工具,boost会提供类似的功能。两者都是你想要做的惯用方法。

答案 1 :(得分:-1)

我认为你正在寻找的是观察者模式的一些方面: http://sourcemaking.com/design_patterns/observer

更常见的是Model-View-Controller或Presentation-Abstraction-Control模型: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller http://en.wikipedia.org/wiki/Presentation%E2%80%93abstraction%E2%80%93control

您可能还想查看Qt信号/插槽实现: http://qt-project.org/doc/qt-4.8/signalsandslots.html