私はRubyの宝石を書いています。私は使用されるクラスとモジュールを設計したいと思います。Rubyソフトウェアの必要なクラスとモジュールを特定する方法は?
- どのように識別するのですか?
- どこでクラスが必要ですか、モジュールはどこに必要ですか?
私はRubyの宝石を書いています。私は使用されるクラスとモジュールを設計したいと思います。Rubyソフトウェアの必要なクラスとモジュールを特定する方法は?
あなたの質問は、Ruby言語の主要な設計機能の1つです。
基本的に、モジュールはツールのコレクションとして、そしてクラスはそれらのツールと混在できるオブジェクトのコレクションとして見ることができます。
Ruby faqは、モジュールについて述べている:
モジュールは、メソッドや定数の集まりです。インスタンスを生成することはできません。
にはを入力します。クラスが必要です。 MyClass.new
を実行することはできますが、モジュールを使用することはできません。MyModule.new
は機能しません。一方
:
クラスがインスタンス(オブジェクト)を生成し、インスタンスごとの状態(インスタンス変数)を有していてもよいです。
には、の処理方法が必要な場合は、モジュールが必要です。 MyModule.doSomething(SomeParams)
を行うことができます。また、クラスメソッドでそれを行うこともできますが、いくつか混在させることはできません。
詳細な回答はthis faqを参照してください。
+1は、クラスとモジュールの違いを明確に説明しています。ありがとうございました。 –
これは、私がHead First Object-Oriented Analysis and Designのような本を勉強することをお勧めします。私は通常、ビジネスモデルの中核となる俳優/コンセプトを特定し、必要なクラスを見つけようとします。
基本的な規則は、いくつかの状態を維持する必要がある場合はクラスを使用し、状態を維持する必要がない場合はモジュールを使用することです。 part 1、part 2、part 3、part 4私はstricly状態として行動カプセルやクラスなどとしてモジュールを考えるために使用
:Rubyは、モジュールのRubyのためのいくつかの用途があり、いくつかの練習Rubyのブログでこのトピックに関する記事があります(カプセル化からの)行動カプセル。
したがって、動作をカプセル化する場合は、モジュールを使用します。それ以外の場合は、クラスを使用します。
クラスはオブジェクトの一種です。モジュールは、コードを編成し、グローバル変数/メソッド名の衝突を防ぐ名前空間を提供する構造体です。あなたの好みに基づいているので、あなたが必要とするクラスとモジュールを特定することです。 – itdoesntwork