2017-01-08 3 views
2

Für jede Unterklasse der BaseStrategy erklärt zu werden, in der Registrierung möchte ich sie auf die BaseStrategy.strategies Array hinzuzufügen später verwendet werden. Was ich tun kann, ist Klassenmethode hinzufügen BaseStrategy.register_strategy und nennt es in jeder Unterklasse. Aber das wäre fehleranfällig. Stattdessen möchte ich BaseStrategy.register_strategy automatisch aufgerufen, wenn eine neue Unterklasse von BaseStrategy erklärt wird. Wie kann ich das machen?automatisch eine Unterklasse hinzufügen

Antwort

2

Verwenden inherited Haken:

class BaseStrategy 
    class << self 
    def inherited(klass) 
     register_strategy(klass) 
    end 

    def register_strategy(strategy) 
     puts "Adding strategy #{strategy}" 
    end 
    end 
end 

class Foo < BaseStrategy 
end 
+0

Danke, genau das, was ich suchte –

Verwandte Themen