[英]Is it possible to implement strategy pattern with enum in Spring
我正在嘗試使用Enum實現策略模式,但是我需要Service來處理我的每項任務。 我試圖將服務自動添加到Enum中,但它不起作用。 我搜索了一下“如何將豆子注入枚舉”,並給出了答案 (但是對我來說,它看起來並不優雅)。
我現在猶豫是否繼續,因為我不知道這是否是一個好方法。 我們是否有針對此類要求的面糊設計?
public enum TaskType {
CREATE_MATERIAL{
@Override
public void handleTask(ScheduledEvent scheduledEvent) {
service.createMaterial(scheduledEvent);
}
};
@Autowired
private static AService service;
public abstract void handleTask(ScheduledEvent scheduledEvent);
}
您不能自動連接enum
,因為枚舉是Java運行時創建的常量,因此不能是Spring管理的Bean。
您需要將任何必需的值作為參數傳遞給方法。
public enum TaskType {
CREATE_MATERIAL{
@Override
public void handleTask(AService service, ScheduledEvent scheduledEvent) {
service.createMaterial(scheduledEvent);
}
};
public abstract void handleTask(AService service, ScheduledEvent scheduledEvent);
}
如果不同的策略需要調用不同的服務,請停止使用enum
。
public interface TaskType {
public abstract void handleTask(AService service, ScheduledEvent scheduledEvent);
}
@Component
public class CreateMaterial implements TaskType {
@Autowired
private static AService service;
@Override
public void handleTask(ScheduledEvent scheduledEvent) {
service.createMaterial(scheduledEvent);
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.