zope.component的简单例子

from zope.interface import Interface, Attribute, implements
from zope.component import adapts, getAdapter, getUtility, getGlobalSiteManager

# Interface
class IPerson(Interface):
     name = Attribute("Name")
     email = Attribute("Email Address")
     phone = Attribute("Phone Number")

class IPersonAdapter(Interface):
    def showName():
        """showName"""
    
    def showMail():
        """showMail"""

class IUtility(Interface):
    def doSomething():
        """doSomething"""

# Implements
class Person(object):
    implements(IPerson)

    name = None
    email = None
    phone = None

class PersonAdapter(object):
    implements(IPersonAdapter)
    adapts(IPerson)
    
    def __init__(self, person):
        self.person = person
    
    def showName(self):
        print(self.person.name)
    
    def showMail(self):
        print(self.person.email)

class Utility(object):
    implements(IUtility)
    
    def doSomething(self):
        print("doSomething")
    

if __name__ == '__main__':
    gsm = getGlobalSiteManager()
    
    # use Adapter
    gsm.registerAdapter(PersonAdapter)
    person = Person()
    person.name = "William"
    person.email = "admin@qq.com"
    person.phone = "000000"
    personAd = getAdapter(person, IPersonAdapter)
    personAd.showName()
    
    # use Utility
    utility = Utility()
    gsm.registerUtility(utility, IUtility)
    getUtility(IUtility).doSomething()

  

posted @ 2011-10-29 00:36  猫之良品  阅读(509)  评论(0编辑  收藏  举报