4.2. What Does It Look Like?
The interfaces associated with the ModelLocator are found in the com.adobe.cairngorm.model package. The following interfaces are found in this package:
IModelLocator: Marker interface used to mark the custom ModelLocator.
ModelLocator: Deprecated as of Cairngorm 2.1 and replaced by com.adobe.cairngorm.model.IModelLocator.
The code for the IModelLocator interface is as follows:
package com.adobe.cairngorm.model
{
public interface IModelLocator
{
}
}
No methods are actually defined in the interface. The only purpose of this interface is to allow data typing to mark a class as an instance of a ModelLocator.
Many developers do not even bother implementing the interface in their ModelLocator classes. Such an implementation might look like the following:
package model
{
import mx.collections.ArrayCollection;
import com.someproject.vo.UserVo;
[Bindable]
public class ModelLocator
{
static private var __instance:ModelLocator;
public var user:UserVO;
public var items:ArrayCollection=new ArrayCollection();
public var purchasedItems:ArrayCollection=new ArrayCollection();
public function ModelLocator()
{
if ( modelLocator != null )
{
throw new Error( "Only one ModelLocator instance should be instantiated");
}
}
static public function getInstance():ModelLocator
{
if(__instance == null)
{
__instance=new ModelLocator();
}
return __instance;
}
}
}
In the preceding example you can again see the implementation of the singleton pattern with the private static instance ...