Sakai services follow certain guidelines and design patterns.
Coding to APIs
Sakai code (with very few exceptions) is written to interfaces. That means that objects are declared against an interface and only methods defined for that interface are invoked against a class instance. This pattern holds true for standard Java classes as well, thus List is used instead of Vector.
Dependency Injection
Where one service depends on another, Sakai uses dependency injection to resolve references when a class instance is created. Dependency injection support is provided by the Sakai Kernel.
Manager Classes
Most Sakai services will include a Manager class that is reponsible for creating and managing instances of the objects included in this service. In this regard, it is similar to a factory pattern. The Manager class is responsible for persistence and retreival of objects from a permanent data store.
Support for Integration
All Sakai services must provide support for enterprise integration. In some cases, this is done by multiple implementations of the API against different enterprise services. One of these alternative implementations can be specified as the primary implementation that Sakai tools will use.