public class SubjectOberser{
private String subjectKey;
private AbstractObserver abstractObserver;
...geter seter 方法...
}
public interface Collector<T, A, R> {
Supplier<A> supplier();
BiConsumer<A, T> accumulator();
Function<A, R> finisher();
BinaryOperator<A> combiner();
Set<Characteristics> characteristics();
}
public BiConsumer<Map<String, List<AbstractObserver>>, SubjectObserver> accumulator() {
return (Map<String, List<AbstractObserver>> acc, SubjectObserver v) -> {
if (acc.containsKey(v.getSubjectKey())){
acc.get(v.getSubjectKey()).add(v.getAbstractObserver());
}else{
List<AbstractObserver> l = new ArrayList<>();
l.add(v.getAbstractObserver());
acc.put(v.getSubjectKey(),l);
}
};
}
public Function<Map<String, List<AbstractObserver>>,
Map<String, List<AbstractObserver>>> finisher(){
return Function.identity();
}
public BinaryOperator<Map<String, List<AbstractObserver>>> combiner() {
return ((Map<String, List<AbstractObserver>> map1,
Map<String, List<AbstractObserver>> map2) -> {
map1.putAll(map2);
return map1;
});
}
public Set<Characteristics> characteristics() {
return Collections.unmodifiableSet(EnumSet.of(Characteristics.IDENTITY_FINISH));
}
public class MyCollector implements Collector<SubjectObserver,
Map<String, List<AbstractObserver>>,
Map<String, List<AbstractObserver>>> {
@Override
public Supplier<Map<String, List<AbstractObserver>>> supplier() {
return () -> new HashMap<>();
}
@Override
public BiConsumer<Map<String, List<AbstractObserver>>, SubjectObserver> accumulator() {
return (Map<String, List<AbstractObserver>> acc, SubjectObserver v) -> {
if (acc.containsKey(v.getSubjectKey())) {
acc.get(v.getSubjectKey()).add(v.getAbstractObserver());
} else {
List<AbstractObserver> l = new ArrayList<>();
l.add(v.getAbstractObserver());
acc.put(v.getSubjectKey(), l);
}
};
}
@Override
public BinaryOperator<Map<String, List<AbstractObserver>>> combiner() {
return ((Map<String, List<AbstractObserver>> map1, Map<String, List<AbstractObserver>> map2) -> {
map1.putAll(map2);
return map1;
});
}
@Override
public Function<Map<String, List<AbstractObserver>>, Map<String, List<AbstractObserver>>> finisher() {
return Function.identity();
}
@Override
public Set<Characteristics> characteristics() {
return Collections.unmodifiableSet(EnumSet.of(Characteristics.IDENTITY_FINISH));
}
}
public static Map<String, List<AbstractObserver>> initObjectMap() {
ClassScaner classScaner = new ClassScaner();
Set<Class> set = classScaner.doScan("com.souche.datacenter.observer");
return set
.stream()
.filter(aClass -> SubjectAnnotationResolver.getAnnotationSubjectName(aClass) != null)
.map(aClass -> {
String subjectKey = SubjectAnnotationResolver.getAnnotationSubjectName(aClass);
AbstractObserver abstractObserver = getBeanByClassName(aClass.getSimpleName());
return new SubjectObserver(subjectKey, abstractObserver);
}).collect(new MyCollector());
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有