java 枚举工厂_在Java中使用枚举工厂,最佳做法?

Java允许我们在Enum上嵌入数据和行为.

我不想在Enum上直接实施一个工厂,因为我认为这不是它的作用.

但是我可以把类的引用放在枚举上,并在外部工厂中引用对象.相对于传统的工厂模式,你最好的实现是什么?哪种解决方案在哪种情况下更好?

现在,代码.

在两种解决方案中使用的函数来构造对象.如果需要,可以使用Map来实现fly-weight模式.

private Action getAction(Class extends Action> actionClazz) {

// logger + error handling

return actionClazz.newInstance();

}

1)有传统工厂:

public enum ActionEnum {

LOAD_DATA,

LOAD_CONFIG;

}

public Action getAction(ActionEnum action) {

switch (action) {

case LOAD_CONFIG:

return getAction(ActionLoadConfig.class);

case LOAD_DATA:

return getAction(ActionLoadData.class);

}

}

2)具有Enum风格的工厂:

public enum ActionEnum {

LOAD_DATA(ActionLoadConfig.class),

LOAD_CONFIG(ActionLoadData.class);

public ActionEnum(Class extends Action> clazz){...}

public getClazz() {return this.clazz}

}

public Action getAction(ActionEnum action) {

return getAction(action.getClazz());

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值