FactoryBox 一个Android 代码生成列子

FactoryBox 一个Android 代码生成列子

使用google的auto-service和AbstractProcessor进行代码生成。看了不少讲解AbstractProcessor的教程,后来我一直在需要找其应用的实例。后来在项目中的一个配置文件经常改动想到了自动生成代码,于是考虑实践一下

例子

1、需要实现的接口

public interface Event {

    void onEvent();
}


2、具体的实现接口的类

@FactoryBox(key = "destroy", product = Event.class)
public class DestroyEvent implements Event {

    @Override
    public void onEvent() {

    }
}


@FactoryBox(key = "resume", product = Event.class)
public class ResumeEvent implements Event {

    @Override
    public void onEvent() {

    }
}

3、自动生成部分

package com.owant.createcode.testcode;

import java.lang.Exception;
import java.lang.String;

public final class EventFactory {
  public static Event create(String key) throws Exception {
    if("sub_event".equals(key)) {
      return new com.owant.createcode.sub.SubEvent();
    } else if("create".equals(key)) {
      return new com.owant.createcode.CreateEvent();
    } else if("destroy".equals(key)) {
      return new com.owant.createcode.testcode.DestroyEvent();
    } else if("resume".equals(key)) {
      return new com.owant.createcode.testcode.ResumeEvent();
    } else {
      throw new Exception(String.format("没有到key=%s对应的实现",key));
    }
  }
}

好处

实现工厂模式的拓展,不关心工厂的实现,工厂由代码进行生成。减少了更改。
https://github.com/owant/FactoryBox

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android Model正确使用姿势AutoValue 前言 简介 简单使用 ImmutableValue ty...
    M悇芐冋忆阅读 1,039评论 0 3
  • 一. Java基础部分.................................................
    wy_sure阅读 3,846评论 0 11
  • 我是Newstart,今年42岁了,在这之前,我是一个常年奋斗在减肥路上的一线战士。市面上的许多减肥方法我都试过...
    小姀如歌阅读 414评论 2 5
  • 欢欢正在梦里喝奶奶煮的冰糖雪梨汤,突然被一阵急促的肘击惊醒,猛地站了起来。 陈欢同学自告奋勇的精神值得我们学习。叶...
    苏菀苏阅读 263评论 0 0
  • 归元命理第五次作业 刘会磊 填空题: 1、在十二地支中,表示少阳成的状态叫做( 卯 ),表示少阴生的状态叫做(寅...
    A双环牌钢卷尺阅读 233评论 1 0