package jdepend.knowledge.pattern.impl1;
import java.util.ArrayList;
import java.util.Collection;
import jdepend.knowledge.pattern.PatternInfo;
import jdepend.model.JavaClassUnit;
public class FacadeIdentifyer extends AbstractPatternIdentifyer {
@Override
public String getExplain() {
StringBuilder explain = new StringBuilder();
explain.append(" <strong>门面模式</strong><br>");
explain
.append(" 1、被组件外的类调用的比例超过九成;2、调用的类是所属组件内的比较超过八成;<br><br>");
return explain.toString();
}
@Override
public Collection<PatternInfo> identify(Collection<JavaClassUnit> javaClasses) {
Collection<PatternInfo> rtn = new ArrayList<PatternInfo>();
Float extCaCallScale;
Float innerCellScale;
int innerCellCount;
for (JavaClassUnit javaClass : javaClasses) {
if (javaClass.getCaList().size() > 0) {
extCaCallScale = javaClass.getAfferents().size() / javaClass.getCaList().size() * 1F;
if (extCaCallScale >= 0.9) {
if (javaClass.getCeList().size() > 0) {
innerCellCount = javaClass.getCeList().size() - javaClass.getEfferents().size();
innerCellScale = innerCellCount / javaClass.getCeList().size() * 1F;
if (innerCellScale >= 0.8) {
rtn.add(new PatternInfo(javaClass.getJavaClass(), javaClass.getName()));
}
}
}
}
}
return rtn;
}
}