2011-12-28 4 views
2

참고 : ZCA가 처음이므로 코드가 올바르지 않을 수 있습니다. 그러나 저는 ZCA의 작동 방식에 다소 익숙합니다. Zope Component Architecture 구성 요소가 구현하는 인터페이스를 명시해야합니까?

예를 들어 감안할 때 :

class I1(Interface): 
    def c1(): 
     pass 

class U1(object): 
    implements(I1) #is this necessary? 
    def c1(): 
     #do some things here 

implements(I1) 라인이 필요, 또는 ZCA가 U1은 (종류의 이동 작업의 방식 인터페이스 등) I1을 구현하는 자체 알아낼 수 있습니까?

답변

4

구성 요소는 상태가 필요하지 않습니다. 구성 요소 조회는 인터페이스에서 수행되므로 구성 요소 레지스트리는 구성 요소 레지스트리에 등록 될 때 주로 중요합니다.

구성 요소 레지스트리가 여러 가지 방법으로 어떤 인터페이스를 구현하는지 알 수 있습니다. 가장 일반적인 방법 중 하나는 컴포넌트 자체에서 implements() 호출을 사용하는 것입니다. 구성 요소를 등록 할 때 구현되는 인터페이스를 구성 요소 레지스트리에 알릴 수도 있습니다.

구성 요소가 테스트에서 주로 사용되는 특정 인터페이스를 구현하는지 확인하는 기능도 있습니다.

그렇습니다. ZCA의 인터페이스는 Go에서와 같이 작동하지만 구성 요소 레지스트리가 추가됩니다 (Go는 그렇게하지 않았지만 놓쳤습니다. Go 전문가는 아닙니다). 인터페이스 및 이름을 기반으로 구성 요소를 찾습니다.