反贫血的枚举类

在java开发过程中,有很多同学,喜欢把一些常量写枚举类,于是代码里充斥了各种如下的枚举类:

public enum ShipOrderEnum  implements IEnum {

    /**
     * 主表区域
     */
    BILL_TYPE("发货单", "BILL_TYPE", "", "6c4db816003911ea8eba73973c5f9d29"),
    SOURCE_BILL_TYPE("来源单据类型", "SOURCE_BILL_TYPE", "", "1dc36afdffcf11e98eba6df808af9ab8"),
    BILL_STATUS("生效", "BILL_STATUS", "", "3433acad004011ea8ebaef817a4fb296"),
    BILL_STATUS_CLOSE("关闭", "BILL_STATUS", "", "377ac160004011ea8ebab3a03decbd60"),
    COMPANY("公司", "COMPANY", "CG_COMPANY", ""),
    RECEIVE_ADDRESS("收货地址", "RECEIVE_ADDRESS", "CG_RECEIPT_ADDRESS_TITLE", "0f756841ff8011e98eba2d193701d607"),
    REC_ADDRESS_DETAIL("收货详细地址", "REC_ADDRESS_DETAIL", "CG_ADDRESS_DETAIL", ""),
    SUPPLIER("发货方", "SUPPLIER", "CG_SUPPLIER_TITLE", "36b59270fe3d11e9afbcfd5832a999da"),
    SUPPLIER_USER("发货用户", "SUPPLIER_USER", "CG_SUPPLIER_USER", ""),
    NEED_CONFIRM("否", "NEED_CONFIRM", "CG_CONFIRM_NEED", "6b8ff0809ebe11e88b7219c3aed96e32"),
    NOTE("备注", "NOTE", "CG_NOTE", ""),
    SUB_ORDER_OF_SUPPLIER("供应商子订单编号", "SUB_ORDER_OF_SUPPLIER", "", ""),
    SUB_ORDER_OF_MALL("商城子订单编号", "SUB_ORDER_OF_MALL", "", ""),
    AMOUNT("发货金额", "AMOUNT", "AMOUNT", "6e589eb2dd9f11e8b5a69590a14a4e34"),
    BUSINESS_TYPE("业务类型", "BUSINESS_TYPE", "CG_BUSINESS_TYPE", ""),
    E_ORDER("电商订单", "E_ORDER", "CG_EB", ""),
    /**
     * 子表区域
     */
    ROW_NUM("行号", "ROW_NUM", "", ""),
    LINE_SOURCE("来源类型", "LINE_SOURCE", "", "1dc36afdffcf11e98eba6df808af9ab8"),
    SOURCE_PO("来源订单", "SOURCE_PO", "", "82f60743004011ea8ebaa77a9461678d"),
    LINE_TPYE("明细类型", "LINE_TPYE", "CG_LINE_TPYE", ""),
    MATERIAL_CODE("物料编码", "MATERIAL_CODE", "CG_MATERIAL_CODE_TITLE", "8dd2ee63fefe11e98eba99b2c3325608"),
    MATERIAL_CLASS("采购类别", "MATERIAL_CLASS", "CG_CLASS", ""),
    MATERIAL_NAME("采购内容", "MATERIAL_NAME", "CG_MATERIAL_NAME", ""),
    MATERIAL_SPEC("规格型号", "MATERIAL_SPEC", "CG_MATERIAL_SPEC", ""),
    UNIT("计量单位", "UNIT", "CG_UNIT", ""),
    SHIP_QUANTITY("发货数量", "SHIP_QUANTITY", "", ""),
    LINE_NOTE("备注", "LINE_NOTE", "CG_LINE_NOTE", ""),
    PRICE_WO_TAX("不含税单价", "PRICE_WO_TAX", "CG_PRICE_WO_TAX", ""),
    PRICE_WI_TAX("含税单价", "PRICE_WI_TAX", "CG_PRICE_WI_TAX", ""),
    TAX_CODE("税率编码", "TAX_CODE", "CG_TAX_CODE", ""),
    TAX_RATE("税率", "TAX_RATE", "CG_TAX_RATE", ""),
    AMOUNT_WO_TAX("不含税金额", "AMOUNT_WO_TAX", "CG_AMOUNT_WO_TAX", ""),
    AMOUNT_WI_TAX("含税金额", "AMOUNT_WI_TAX", "CG_AMOUNT_WI_TAX", ""),
    TAX_AMOUNT("税额", "TAX_AMOUNT", "CG_TAX_AMOUNT", ""),
    QUAN_EXCECUTED("已执行数量", "QUAN_EXCECUTED", "CG_QUAN_EXCECUTED", ""),
    QUAN_UNEXCECUTED("未执行数量", "QUAN_UNEXCECUTED", "CG_QUAN_UNEXCECU", ""),
    QUAN_RECEIVED("已收货数量", "QUAN_RECEIVED", "CG_QUAN_RECEIVED", ""),
    LINE_STATUS("状态", "LINE_STATUS", "CG_LINE_STATUS", ""),
    CG_SETTLE_TYPE("结算类型", "CG_SETTLE_TYPE", "CG_SETTLE_TYPE", ""),
    CG_STATE_SPONSOR("对账发起方", "CG_STATE_SPONSOR", "CG_STATE_SPONSOR", ""),
    LINE_DETAIL("详情", "LINE_DETAIL", "", ""),
    MATERIAL_PIC("图片", "MATERIAL_PIC", "CG_ATTACHMENT", ""),
    CG_GOODS_ID("电商商品编码", "CG_GOODS_ID", "CG_GOODS_ID", ""),
    CG_GOODS_CODE("商品编码", "CG_GOODS_CODE", "CG_COMMODITY_CODE", ""),
    /**
     * 退货单
     */
    RETURN_TYPE("返件方式","RETURN_TYPE","RETURN_TYPE",""),
    SO_NUMBER("货运单号","SO_NUMBER","SO_NUMBER",""),
    DELIVERY_COMPANY("发货公司","DELIVERY_COMPANY","DELIVERY_COMPANY",""),
    FREIGHT_COST("派件运费","FREIGHT_COST","FREIGHT_COST",""),
    RETURN_TIME("运回时间","RETURN_TIME","RETURN_TIME",""),
    EB("电商订单","EB","EB",""),
    SERVICE_TYPE("服务类型", "SERVICE_TYPE", "SERVICE_TYPE", ""),
    CG_EMALL_RETURN_NO("商城退货编号","CG_EMALL_RETURN_NO","CG_EMALL_RETURN_NO",""),
    PLATFORM_RETURN_NO("平台退货单编号","HUBAFSSN","HUBAFSSN",""),
    SOURCED_PO_LINE("来源收货明细", "SOURCED_PO_LINE", "SOURCED_PO_LINE", ""),
    /**
     * 接收单
     */
    CG_EB_NO("商城订单号", "CG_EB_NO", "CG_EB_NO", ""),
    CG_EB("电商订单", "CG_EB", "CG_EB", ""),
    SOURCE_SO_LINE("来源接收明细", "SOURCE_SO_LINE", "SOURCE_SO_LINE", ""),
    ;

    private String title;
    private String column;
    private String cg_column;
    private String id;

    ShipOrderEnum(String title, String column, String cg_column, String id){
        this.title = title;
        this.column = column;
        this.cg_column = cg_column;
        this.id = id;
    }

    @Override
    public String getTitle() {
        return title;
    }

    public String getColumn() {
        return column;
    }

    public String getCg_column() {
        return cg_column;
    }

    public String getId() {
        return id;
    }

    public String gerCurrencyId(){
        return cg_column + ShipOrderConstant.CURRENCY_ID;
    }

由于开发人员可能有多个人开发相似的功能,于是重复的枚举值充斥在各种类里。还是美其名曰我声明了枚举值啊。在我看来,上面的枚举类就是死的,贫血的枚举类,难道还有活的,充血的枚举类吗?请看下文:

 如果了解设计模式的人员,就知道这里实现了两种模式:单例+策略:枚举类是单例的,方法是每个枚举类的行为。但是这种方式有一个缺陷,只能有一个抽象方法,但是已经满足策略模式。对于想实现策略模式是另一种更好的选择:可以减少大量的策略类,不用写策略模式单例的入口了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值