2

私は軽量のIDEを書いています。タスクには Ruby+Gtk2 を選択しました。私はすでに最小限のプロトタイプを持っていますが、現在、ほとんどのコードはウィンドウ クラス内にあります。もうすぐ「本番」に取り掛かるのですが、どんなデザインパターンを使えばいいのか知りたいです。アプリを拡張できるように、プラグインのサポートも計画しています。どんなアイデアでも大歓迎ですが、オプションについて少し話し合ってください。

これはスクリプト言語であることに注意してください。Java のすべての設計パターンがここに当てはまるかどうかはわかりません。

4

6 に答える 6

5

デザイン パターンは、一般的な問題の解決策です。どのような問題がありますか? コンサルティングの仕事では、誰かが「よし、これが私のアイデアだ。どのデザインパターンを機能させることができるか?」と言い始めると、アーキテクチャがすぐに過度に複雑になることがよくあります。

使用できる可能性のあるデザイン パターンを探す代わりに、デザイン パターンを読んで (ウィキペディアにリンクするのは嫌いですが、ウィキペディアの記事には、少なくとも他の検索を開始するための良いリストがあります)。彼らの基準に合った問題を考え出してください。

ウィンドウ クラスに多くのコードを含める限り、それはアプリケーションに適しているか、緩い MVC パターンのようなものを見たいと思うかもしれません。一般に、GUI プログラミングの場合、厳格な MVC は厳しすぎるため、関心事を「真に」分離するには多くの作業が必要になります。

設計パターンなしで解決できる一般的な問題は数多くありますが、それは解決策が正しいか間違っているかを意味するものではありません。たとえば、プラグインのサポートは、多くの場合、プラグイン インターフェイスまたはプラグインが応答できる一連のイベントを提供するだけで提供されます。別の方法として、Adapter パターンを確認することもできます。

于 2009-03-24T12:01:18.447 に答える
1

これが適切かどうかはわかりませんが、C#でIDEを分析して構築することについてのすばらしい本があります。この本では、SharpDevelopIDEの開発に使用されているデザインパターンについて説明しています。SharpDevelopは優れたIDEであり、SharpDevelopのこの本ホームページを覗いてみたいと思うかもしれないオープンソースです。

于 2009-03-25T15:44:37.480 に答える
1

誤解の可能性を明確にするために、おそらくUIパターン(ソフトウェアアーキテクチャの設計パターンではなく)について言及していますか?あなたの質問は、その方が理にかなっているように思えます。

于 2009-03-24T12:44:04.443 に答える
1

これが役に立つかどうかはわかりませんが、「 Ruby のデザイン パターン」という本では、Rubyのデザイン パターンと、それらが Java のデザイン パターンとどのように異なるかについて説明しています。

于 2009-03-24T11:58:31.463 に答える
1

また、既存の IDE を確認することも忘れないでください。彼らは何を使いましたか?

編集は IDE のコンポーネントになるため、実際のオープン ソース エディタを確認する必要があります。

于 2009-03-24T12:04:02.293 に答える
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 のサンプル プロジェクトの 1 つから取られています。

于 2012-05-26T05:11:43.310 に答える