使用注解自动生成代码

本文原始发表于:https://juejin.cn/post/6955740450061811720

使用场景

考虑这样一种场景:我们是一个汽车生产商,我们生产各种品牌的汽车,比如宝马、奔驰、奥迪等等,为了面向对象开发,我们定义一个基类 Car

abstract class Car {
   
  fun brand(): String // 每辆车都有一个品牌
}

各个牌子的车

class BMW : Car {
   
	override fun brand(): String {
   
    return "BMW"
  }
}

class Benz : Car {
   
	override fun brand(): String {
   
    return "Benz"
  }
}

class Audi : Car {
   
	override fun brand(): String {
   
    return "Audi"
  }
}

我们是汽车生产商,我们生产车,而不是搬运工,我们需要一个生产车间,因此我们需要定义一个工厂类 CardFactory

class CardFactory {
   
  fun produceCar(brand: String): Car {
   
        when (brand) {
   
            "BMW" -> return BMW()
            "Benz" -> return Benz()
            "Audi" -> return Audi()
        }
    }
}

看起来非常完美,使用了工厂模式,很高级,需要生产什么牌子的车,直接传一个品牌名字就可以生产出对应牌子的汽车了。我们把这一套生产流程交给公司的骨干 小明 负责。

随着我们的生意越做越大,我们生产的汽车品牌越来越多,但是没有关系,得益于我们良好的封装,我们只需要继承 Car 类,实现新品牌汽车,然后在工厂类 CardFactory 中增加一个 when -> case 的判断就好了,由于小明非常熟悉这一套生产流水线,所以每一次有新增品牌都难不倒小明。

后来公司越做越大,小明从基础骨干晋升为部门 Leader,为了提高工作效率,汽车品牌的实现交给 小白 负责,工厂的负责人分配给了 小黑 ,由于小白只负责汽车的实现,小黑只负责工厂的管理,所以常常出现一个问题:小白实现了一个新品牌汽车,而小黑没有在工厂中新增新品牌汽车的生产逻辑,这就导致生产线出现了问题

为了解决这个问题,小明想到了一个方法:其实每次有新增品牌的汽车,工厂类只需要增加一个判断逻辑即可,工作十分枯燥,甚至有点冗余。这里有一个可优化的点,只要 Car 的实现类确定之后,工厂类的新增代码就是固定的,即模板代码是确定的。于是小明发明了一套基于 Annotation Processor 和编译时注解实现的自动生成工厂类代码的方案

首先自定义一个注解类 @CarAnnotation

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class CarAnnotation(val brand: String)

然后在各个子类中加上这个注解

@CarAnnotation("BMW")
class BMW : Car {
   
	override fun brand(): String 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CodeMaker是一种自动化代码生成工具,可以帮助开发人员根据他们的Idea快速生成代码。它可以减少代码编写的工作量,提高开发效率。 使用CodeMaker生成代码的步骤如下: 首先,我们需要安装并配置CodeMaker插件。打开Idea,选择插件设置,搜索CodeMaker并安装。安装完成后,重启Idea并进行相关配置,如选择所需的语言和代码风格等。 接下来,在Idea中创建一个新的代码文件或打开现有的代码文件。 然后,选择需要自动生成代码的部分。可以选择整个文件、特定的类、方法,甚至是某些注释块。CodeMaker可以根据选定的代码自动生成相关的代码。 在选定的代码段上使用快捷键或右键菜单选择CodeMaker生成代码。根据选择的代码段,CodeMaker会自动生成代码。 生成的代码可以根据需要进行进一步的修改和定制。CodeMaker会根据所选的语言和代码风格生成代码模板,但仍然需要根据实际需求进行适当的调整。 最后,对生成的代码进行保存并进行测试。确保生成的代码符合预期并正常工作。 值得注意的是,CodeMaker虽然可以辅助我们生成代码,但并不能完全替代开发人员的工作。在使用CodeMaker生成的代码之前,开发人员需要对其进行充分的理解和确认,以确保生成的代码符合项目需求和开发准则。 总结起来,通过CodeMaker自动生成代码,开发人员可以提高开发效率,减少重复劳动,但仍需要根据实际需求进行适当的修改和定制。这样可以更好地利用CodeMaker的功能,快速开发出高质量的代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值