gpt4 book ai didi

java - 从列表中获取处理案例的服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:30 24 4
gpt4 key购买 nike

我有一些实现接口(interface)的处理程序。每个处理程序应根据一种或多种类型服务于某些情况。我通过 Autowiring 获得了该处理程序的列表。因此,当我想在迭代它们时使用这些处理程序并检查它们中的一些是否处理该案例,如果是的话,我将在该案例上运行它。如此处所述-

@Service
public class CarCreator implments ICreator{

@Override
public boolean shouldServe(IEntity entity){
entity.getType().equal(Type.Car);
}

@Override
public boolean crate(IEntity entity){ .. some code ...}

}


@Service
public class HouseCreator implments ICreator{

@Override
public boolean shouldServe(IEntity entity){
entity.getType().equal(Type.House);
}

@Override
public boolean crate(IEntity entity){ .. some code ...}

}


@Service
public class AnimalCreator implments ICreator{

@Override
public boolean shouldServe(IEntity entity){
entity.getType().equal(Type.Animal);
}

@Override
public boolean crate(IEntity entity){ .. some code ...}

}


interface ICreator{
boolean shouldServe(IEntity entity);


public boolean crate(IEntity entity);
}


public void EntitiesCreatorManger{
List<ICreator> creators;

@Autowired
public EntitiesCreatorManger(List<ICreator> creators){ this.creators = creators;}

public void createEntities(List<IEntity> entitites){
entities.stream.forEach(entity-> {
for(ICreator creator : creators){
if(creator.shouldServe(entity){
creator.create(entity);
break;
}
}
}

}

我想用更优雅的方式来做,而不是让我系统中的每个接口(interface)列表都这样使用。有没有办法?

最佳答案

将你所有的 ICreators 放在一个查找图中:

Map<IEntity, ICreator> map = ...
ICreator creator = map.get(entity);
if(creator != null) {
...}

关于java - 从列表中获取处理案例的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com