mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-16 22:59:11 +00:00
47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
package com.iluwatar;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* The service cache implementation which will cache services that are being created.
|
|
* On first hit, the cache will be empty and thus any service that is being requested, will be
|
|
* created fresh and then placed into the cache map. On next hit, if same service name will
|
|
* be requested, it will be returned from the cache
|
|
* @author saifasif
|
|
*
|
|
*/
|
|
public class ServiceCache {
|
|
|
|
private Map<String, Service> serviceCache;
|
|
|
|
public ServiceCache() {
|
|
serviceCache = new HashMap<String, Service>();
|
|
}
|
|
|
|
/**
|
|
* Get the service from the cache. null if no service is found matching the
|
|
* name
|
|
* @param serviceName
|
|
* @return {@link Service}
|
|
*/
|
|
public Service getService(String serviceName){
|
|
Service cachedService = null;
|
|
for (String serviceJndiName : serviceCache.keySet()){
|
|
if( serviceJndiName.equals( serviceName ) ){
|
|
cachedService = serviceCache.get(serviceJndiName);
|
|
System.out.println("(cache call) Fetched service " + cachedService.getName() + "("+cachedService.getId()+") from cache... !");
|
|
}
|
|
}
|
|
return cachedService;
|
|
}
|
|
|
|
/**
|
|
* Adds the service into the cache map
|
|
* @param newService
|
|
*/
|
|
public void addService(Service newService){
|
|
serviceCache.put(newService.getName(), newService);
|
|
}
|
|
}
|