2011-12-28 11 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はU​​1は(一種の移動作業における双方向インターフェースのような)I1を実装することを自分自身で把握することができますか?

答えて

4

コンポーネントに記載する必要はありません。コンポーネントのインターフェースは、コンポーネント・レジストリーに登録されているときにはほとんど重要です。コンポーネントのルックアップはインターフェース上で行われるためです。

コンポーネントが実装するインターフェイスは、いくつかの方法でコンポーネントレジストリに伝えることができます。最も一般的な方法の1つは、コンポーネント自体に対してimplements()呼び出しを使用することです。また、コンポーネントを登録するときに実装するインターフェイスをコンポーネントレジストリに伝えることもできます。

コンポーネントが特定のインターフェイスを実装しているかどうかをチェックする機能もあります。これは主にテストで使用されます。

そうですが、ZCAのインターフェイスは、Goでの操作と同じように機能しますが、コンポーネントレジストリが追加されています(ただし、Goにはそうしていませんが、見逃しています。インターフェイスと名前に基づいてコンポーネントをルックアップします。

関連する問題