我应该为轻量级IDE使用哪些设计模式?

时间:2009-03-24 11:54:48

标签: ruby design-patterns ide gtk

我正在编写一个轻量级的IDE。我选择Ruby + Gtk2来完成任务。我已经有了一个最小的原型,但是现在,大部分代码都在我的窗口类中。我很快就会开始研究“真正的交易”,但我想知道应该使用哪些设计模式。我也在计划插件支持,以便应用程序可扩展。欢迎任何想法,但请讨论你的选择。

请记住这是一种脚本语言。我不确定Java的所有设计模式是否都适用于此。

6 个答案:

答案 0 :(得分:5)

设计模式是常见问题的解决方案。你有什么问题?在咨询工作中,我们常常看到有人说“好的,这是我的想法。我可以投入哪些设计模式?”,这种架构很快就变得过于复杂。

不要寻找您可能使用的设计模式,而是阅读设计模式(我讨厌链接到维基百科,但their article确实有一个很好的列表可以帮助您入门至少在其他搜索上)然后在你提出符合他们标准的问题时应用它们。

就你的窗口类中有很多代码而言,这可能适合你的应用程序,或者你可能想要看一些松散的MVC模式。一般来说,对于GUI编程,严格的MVC会过于严格,并且需要过多的工作来“真正”分离关注点。

有许多常见问题可以在没有设计模式的情况下解决,这并不意味着解决方案是对还是错。例如,插件支持通常仅通过提供插件接口或插件可以响应的一组事件来给出。或者,您可以查看适配器模式。

答案 1 :(得分:1)

我不确定这是否会有多大帮助,但是书籍“Design Patterns in Ruby”讨论了ruby中的设计模式以及它们与Java设计模式的区别。

答案 2 :(得分:1)

另外,不要忘记查看现有的IDE。他们用了什么?

由于编辑将是IDE的一个组件,因此您应该检查实际的开源编辑器。

答案 3 :(得分:1)

只是为了澄清一个可能的误解:你是指UI patterns(而不是软件架构设计模式)?在我看来,你的问题更有意义。

答案 4 :(得分:1)

我不确定这是否合适,但是有一本很好的关于反传播的书。用C#构建IDE。本书讨论了用于开发Sharp Develop IDE的设计模式。 SharpDevelop是一款不错的IDE&它是开源的你可能想看看this book&对于Sharp Develop来说home page

答案 5 :(得分:0)

设计ruby GUI应用程序的最佳方法是使用visualruby:

http://visualruby.net

您可以将GUI完全与您的类分开。例如,如果要为以下类创建GUI,可以轻松完成而不会打扰它:

class DataObject

  def initialize(name, address, email, phone)
    @name = name
    @address = address
    @email = email
    @phone = phone
  end

end

您可以通过对其进行子类化并添加GUI来为该类创建GUI:

class DataObjectGUI < DataObject

  include GladeGUI

  def show()
    load_glade(__FILE__)  #loads glade/DataObjectGUI.glade into @builder
    set_glade_all() #populates glade controls with insance variables from DataObject 
    show_window() 
  end   

end

GladeGUI界面包含所有GUI魔术。 load_glade()方法将加载文件DataObject.glade。这是一个空地形式,包含名为Gtk :: EntryBoxes,名称,地址,电话和电子邮件。表格将在屏幕上显示填写的所有字段。

显然,show_window()会使窗口出现在屏幕上。当您单击“x”按钮时,GladeGUI会自动调用销毁窗口。

此设计模式可用于任何类。一个很好的例子是如果你有一个ActiveRecord类,并且你想在屏幕上显示记录。你只是像上面那样继承,它是可编辑的,可以保存。

此示例取自visualruby.net上的一个示例项目。