Changes between Version 1 and Version 2 of TracDev/ComponentArchitecture
- Timestamp:
- May 16, 2005, 5:05:31 PM (19 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracDev/ComponentArchitecture
v1 v2 9 9 Components can declare ''"extension points"'' that other components can “plug in” to. This allows one component to enhance the functionality of the component it extends, without the extended component even knowing that the extending component exists. All that is needed is that the original component exposes – and uses – one or more extension points. 10 10 11 http://projects.edgewall.com/trac/attachment/wiki/Trac PluggableModules/xtnpt.png?format=raw11 http://projects.edgewall.com/trac/attachment/wiki/TracDev%252FComponentArchitecture/xtnpt.png?format=raw 12 12 13 13 A component can extend any number of other components and still offer its own extension points. This allows a plugin to itself offer a plugin API (i.e. extension point). This feature is the basis for a plugin-based architecture. … … 29 29 Every extension point specifies the contract that extenders must conform to via an {{{Interface}}} subclass. 30 30 31 http://projects.edgewall.com/trac/attachment/wiki/Trac PluggableModules/comparch.png?format=raw31 http://projects.edgewall.com/trac/attachment/wiki/TracDev%252FComponentArchitecture/comparch.png?format=raw 32 32 33 33 == Declaring a component == … … 145 145 146 146 This output obviously comes from the {{{TodoPrinter}}}. Note however that the code snippet above doesn't even mention that class. All that is needed to have it participating in the action is to declare the class. ''(That implies that an extending class needs to be imported by a python script to be registered. The aspect of loading components is however separate from the extension mechanism itself.)'' 147 148 ---- 149 See also: TracDev