package com.github.ompc.greys.core.util.matcher;
import java.util.Map;
/**
* 带缓存的匹配
* Created by oldmanpushcart@gmail.com on 15/12/12.
*/
public class CachedMatcher<T> implements Matcher<T> {
private final Matcher<T> matcher;
private final Map<T, Boolean> cachedMap;
public CachedMatcher(Matcher<T> matcher, Map<T, Boolean> cachedMap) {
this.matcher = matcher;
this.cachedMap = cachedMap;
}
@Override
public boolean matching(T target) {
final Boolean valueInCache = cachedMap.get(target);
if (null == valueInCache) {
final boolean value = matcher.matching(target);
cachedMap.put(target, value);
return value;
} else {
return valueInCache;
}
}
}