抽象类
public abstract class UploadStrategy {
public abstract void takeAction(String url,Long userId);
}
抽象类实现类
@Service
public class UpdateAvatarStrategy extends UploadStrategy {
@Resource
RegisteredUserService registeredUserService;
@Override
public void takeAction(String url,Long userId) {
RegisteredUser user = registeredUserService.get(userId);
Assert.notNull(user,"user为空");
registeredUserService.update(user, url);
}
}
@Slf4j
@Service
public class UploadSignStrategy extends UploadStrategy {
@Resource
private CertService certService;
@Override
public void takeAction(String url,Long userId) {
log.error("创建签约");
}
}
config 配置
@Configuration
public class UploadConfig {
@Resource
private UpdateAvatarStrategy updateAvatarStrategy;
@Resource
private UploadSignStrategy uploadSignStrategy;
@Bean
Map<Integer, UploadStrategy> uploadStrategyMap() {
Map<Integer, UploadStrategy> map = new HashMap<>();
map.put(AliyunOss.ACTION_UPDATE_AVATAR,updateAvatarStrategy);
map.put(AliyunOss.ACTION_UPLOAD_STATEMENT,uploadSignStrategy);
return map;
}
}
context
@Component
public class UploadContext {
@Autowired
Map<Integer, UploadStrategy> uploadStrategyMap = new HashMap<>();
public void upload(Integer action, String url, Long userId) {
UploadStrategy uploadStrategy = uploadStrategyMap.get(action);
uploadStrategy.takeAction(url, userId);
}
}
调用
@Autowired
private UploadContext uploadContext;
uploadContext.upload(action, url, userId);
end