2011-04-01 4 views
0

私は3つのオブジェクトがあります。オブジェクトインスタンスはお互いの現在の状態を知ることができますか?

  • パーサ
  • ParserState - ParserDefinitions
  • 状態の間の現在の状態と遷移を追跡するステートマシン - それはJSONファイルから読み込み、与えられた状態の正規表現を提供します、ならびにパーサは

ParserStateを操作しParserDefinitionsパーサーの両方のサブクラス(?)であり、パーサー:: ParserState及びパーサー:: ParserDefinitionsように定義される方法を支配するいくつかの他のルール。 ParserStateオブジェクトがParserDefinitionsの現在のインスタンスへのアクセスを持つことができ、その逆も可能です。これは可能なのですか、それとも実際に1つのクラスに組み込むべきであることを暗示していますか?

Btw私はRubyを使用していますので、Rubyコードを使用することができれば、それらの間でインスタンス情報を共有できる可能性があります。

答えて

1
  1. これらはサブクラスではなく、単にクラスの名前空間にすぎません。これは、クラスオブジェクト間のリンケージを提供しません。

  2. オブジェクトAがオブジェクトBの状態にアクセスする方法は、オブジェクトBのメソッドを呼び出して戻り値を調べることです。ここで唯一の問題は、オブジェクトAにオブジェクトBを知らせる方法です。

  3. モジュール名やクラス名のように大文字にしていますが、それらをインスタンスとして参照しているようです。これらのシングルトンオブジェクトはありますか(たとえば)ParserインスタンスはParserStartParserDefinitionsインスタンスの両方を作成しますか?

    上記の
    class Parser 
        attr_accessor :states, :defns 
        def initialize 
        self.states = ParserStates.new(self) 
        self.defns = ParserDefinitions.new(self) 
        end 
    end 
    
    class Parser::ParserStates 
        attr_accessor :parser 
        def initialize(parent_parser) 
        self.parser = parent_parser 
        end 
        def defns 
        parser.defns 
        end 
    end 
    
    class Parser::ParserDefinitions 
        attr_accessor :parser 
        def initialize(parent_parser) 
        self.parser = parent_parser 
        end 
        def states 
        parser.states 
        end 
    end 
    

    、各「子」オブジェクトは、その「親」を知っていて、親が子供たちにアクセサを公開する場合は、すべてのオブジェクトが相互に対話することができます。後者はそうであると仮定すると。

+0

ありがとうございました。 –

関連する問題