interface RegionFactory {
Region buildRegion(String name);
}
interface Region {
...
EntityRegionAccessStrategy buildEntityRegionAccessStrategy(
AccessType accessType,
CacheDataDescription metadata) throws CacheException;
NaturalIdRegionAccessStrategy buildAccessStrategy(
AccessType accessType,
CacheDataDescription metadata) throws CacheException;
CollectionRegionAccessStrategy buildCollectionAccessStrategy(
AccessType accessType,
CacheDataDescription metadata) throws CacheException;
...
}