2017-01-08 1 views
2

BaseStrategy의 각 하위 클래스에 대해 나중에 사용할 BaseStrategy.strategies 배열에 추가하려고합니다. 내가 할 수있는 것은 클래스 메소드 BaseStrategy.register_strategy을 추가하고 각 서브 클래스에서 호출하는 것이다. 그러나 이것은 오류가 발생하기 쉽습니다. 대신, 새 서브 클래스 BaseStrategy이 선언되면 BaseStrategy.register_strategy이 자동으로 호출되기를 원합니다. 어떻게해야합니까?서브 클래스를 레지스트리에 자동 추가

답변

2

후크를 사용 inherited :

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

덕분에, 정확히 내가 무엇을 찾고 있었다 –

관련 문제