看了twisted core document 里面的Tutorials 第4小节,如何把代码写成component based 的结构,使用了components模块里面的registerAdaper().
以及Hight level twisted 的Components: Interfaces and Adapters 小节,介绍adapter: Objects which implement an interface for another object type are called adapters.
一个简单的例子可以说明registerAdapter的作用:
-
class IB(interface):
-
def some_op():
-
-
class A:
-
def do_something(self):
-
-
class B:
-
implements(IB)
-
-
class AdaptAToB:
-
implements(IB)
-
-
def __init__(self, original):
-
self._original = original
-
-
def some_op(self):
-
self._original.do_something()
-
-
#将AdaptAToB 登记为 A 作为B 使用的时候的转换器。
-
components.registerAdapter(AdaptAToB, A, B)
-
-
a = A()
-
b = B()
IB(a): an instance of AdaptAToB.
IB(b): an instance of B.
adapter 的好处是可以 将多个classes 组织成离散的块。比如,如果要多加一个class C,C有需要作为B使用,那么只需要增加class AdaptCToB; 更加简单的情况,如果A和B 都implement 同一个interface,这个interface有个方法是do_something(), 那么只需要一个Adaper class 就可以。这样子,新增一个新的class 变得很简单。
阅读(1062) | 评论(0) | 转发(0) |