package jdepend.knowledge.pattern.impl2.feature; import jdepend.knowledge.pattern.impl2.AbstractFeature; import jdepend.knowledge.pattern.impl2.FeatureCheckContext; import jdepend.metadata.Attribute; import jdepend.metadata.JavaClass; import jdepend.metadata.Method; public class FlyweightFeature extends AbstractFeature { @Override protected boolean have(FeatureCheckContext context) { if (context.getHaveSubClassesCollectionAttributes() == null) { return false; } else { for (Attribute attribute : context.getHaveSubClassesCollectionAttributes()) { for (Method method : context.getCurrent().getSelfMethods()) { for (JavaClass rtnClass : method.getReturnClassTypes()) { if (attribute.getTypeClasses().contains(rtnClass)) { if (method.getArgumentCount() > 0) { if (method.getReadFields().contains(attribute.getName())) { this.setPatternInfo(attribute.getName()); return true; } } } } } } return false; } } @Override public String getName() { return "存在返回集合有子类属性的方法,并且存在参数 方法内部使用了该集合属性"; } }