使用工厂和组件定义的Zope实用程序有什么区别?
Zope实用程序的ZCML注册可以接受组件或工厂,这有点令人困惑。
<utility component=".some.Class" />
与
<utility factory=".some.Factory" />
有什么不同?
没有找到相关结果
已邀请:
2 个回复
玖料萄
磁辫覆氓
注册;
将在执行zcml时创建一个MyUtility实例并存储它以用于将来调用getUtility;
请注意,我们可以将工厂注册为函数而不是类,它只需要在没有参数的情况下调用时返回要使用的实用程序实例。 组件示例 组件的等效示例是;
注册;
这或多或少等同于工厂示例。唯一的区别是,当任何东西(包括注册机制)导入
时,实例化组件示例中返回的实例,其中当使用工厂时,实例在执行zcml配置时实例化,就在它注册之前。在这两种情况下,后续的getUtility调用都将返回相同的实例。 不要与IFactory混淆 这些都不会与IFactory混淆,IFactory确实提供了一些东西,可以在每次询问时为您提供一个新实例,但API略有不同。有关这些内容的详细信息,请参阅此文档