您的位置:首页 > 运维架构

理解zope3 的适配器

2009-07-22 10:04 204 查看
zope 3有三种类型的组件,内容组件,适配器和实用组件

1. 内容组件

内容组件相当于我们平时常说的entity,model,比方说User,Category,Department,Order 都可以理解为内容组件, 例子
class IUser(Interface):

name=Attribute('name')

password=Attribute('password')

email=Attribute('email')

class User(object):

implements(IUser)

def __init__(self,name,password,email):

self.name=name

self.password=password

self.email=email

2. 适配器

适配器可以理解为我们平常所用的服务类,服务类一般操作一个特定的内容组件,比方说UserService会操作User对象,而OrderService会操作Order对象。服务类通常会有一个或多个方法。这个被操作的对象在zope3中就是适配者。在zope3中,适配器可以有以下规律

①实现一接口
②适配一个或多个对象,多个对象叫多适配器
③对象通过构造函数传入

这同一般我们所用的java/c# 静态服务类不同,在那种情况中,所操作对象通常是作为第一个参数传入的,如
interface IUserService{
void login(User user);
}

在zope3中,适配器有服务单一对象的,服务多对象的叫多适配器,另外还有订阅适配器和handler适配器
让我们来看看zope 3的适配器写法,可能像这样

Code

gsm=getGlobalSiteManager()

gsm.registerAdapter(UserService)

user=User('jjx','123456','jjx@email.com')

user_service=gsm.getAdapter(user,IUserService)

user_service.login()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: