FactoryBox 一個(gè)Android 代碼生成列子

FactoryBox 一個(gè)Android 代碼生成列子

使用google的auto-service和AbstractProcessor進(jìn)行代碼生成??戳瞬簧僦v解AbstractProcessor的教程,后來我一直在需要找其應(yīng)用的實(shí)例。后來在項(xiàng)目中的一個(gè)配置文件經(jīng)常改動(dòng)想到了自動(dòng)生成代碼,于是考慮實(shí)踐一下

例子

1、需要實(shí)現(xiàn)的接口

public interface Event {

    void onEvent();
}


2、具體的實(shí)現(xiàn)接口的類

@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、自動(dòng)生成部分

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對(duì)應(yīng)的實(shí)現(xiàn)",key));
    }
  }
}

好處

實(shí)現(xiàn)工廠模式的拓展,不關(guān)心工廠的實(shí)現(xiàn),工廠由代碼進(jìn)行生成。減少了更改。
https://github.com/owant/FactoryBox

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android Model正確使用姿勢(shì)AutoValue 前言 簡(jiǎn)介 簡(jiǎn)單使用 ImmutableValue ty...
    M悇芐冋憶閱讀 1,061評(píng)論 0 3
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評(píng)論 0 11
  • 我是Newstart,今年42歲了,在這之前,我是一個(gè)常年奮斗在減肥路上的一線戰(zhàn)士。市面上的許多減肥方法我都試過...
    小姀如歌閱讀 455評(píng)論 2 5
  • 歡歡正在夢(mèng)里喝奶奶煮的冰糖雪梨湯,突然被一陣急促的肘擊驚醒,猛地站了起來。 陳歡同學(xué)自告奮勇的精神值得我們學(xué)習(xí)。葉...
    蘇菀蘇閱讀 283評(píng)論 0 0
  • 歸元命理第五次作業(yè) 劉會(huì)磊 填空題: 1、在十二地支中,表示少陽(yáng)成的狀態(tài)叫做( 卯 ),表示少陰生的狀態(tài)叫做(寅...
    A雙環(huán)牌鋼卷尺閱讀 257評(píng)論 1 0

友情鏈接更多精彩內(nèi)容