python的装饰器和java的注解_在Java中模拟Python的装饰器

业务:

给表中的数据打不同的标签 如品牌标签 产品标签 情感标签等

打标签的逻辑

log.info("{} Start tagging {}",table,label)

// 具体打标签的逻辑

log.info("{} End tagging {}",table,label)

除了具体的打标签的逻辑外 日志信息是可以共用的

如果用Python来操作就很简单 定义一个装饰器即可 如下所示

def log(func):

def wrapper(*args):

print('{} -- Start tagging {}'.format(*args))

result = func(*args)

print('{} -- End tagging {}'.format(*args))

return result

return wrapper

@log

def tagging_A(table,lable):

# 不关心日志 只有具体的业务逻辑

print("do something here")

@log

def tagging_B(table,lable):

print("do something here")

当调用tagging_A或tagging_B的时候 会自动加上日志

但是Java没有像Python这么好用的装饰器 所以决定采用模板模式 如下所示

// 模板

private void taggingTemplate(String table,String label,Runnable action){

log.info("{} -- Start tagging {}",table,label);

action.run(); // 具体的打标签逻辑

log.info("{} -- End tagging {}",table,label);

}

public void taggingA(){

taggingTemplate("table_a","label_A",()->{

// 具体的打标签逻辑放在这里

System.out.println("do something here");

});

}

除了模板模式外 不知道还有没其他轻量级的方式可以在Java中模拟Python的装饰器?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值