私は、ユーザーが自分の注釈を使用してデータ処理のワークフロー(検証、変換など)を記述できるツールに取り組んでいます。APIデザイン:1つの汎用インターフェースVS 3つの特殊インターフェース?
すぐに使えるアノテーションを使用する以外にも、ユーザーは独自の方法でアノテーションクラスを宣言し、注釈プロセッサを実装する必要があります(< - 実際この点の主な点です) 。
データ処理のために構成されたメソッドは、この1のようになります。
void foo(@Provide("dataId") @Validate(Validator.class) String str) {
doSmth(str);
}
は、注釈の三つのグループに自然があります:
- 初期値を生成するもので、
- 値(変換器)を変換するもの。
- 値を読み取り、何らかの作業(バリデータ、異なるコンシューマ)を実行するもの。いずれかのように見えることができ、注釈のすべてのこれらのタイプを処理するためのインターフェイスを作成するには、この1:
は、だから私は一品を作るために必要
interface GenericAnnotationProcessor {
Object processAnnotation(Annotation annotation, Object processedValue);
}
または私はAPIに3 intefacesを追加することができます。
interface ProducerAnnotationProcessor {
Object produceInitValue(Annotation annotation);
}
interface TransformerAnnotationProcessor {
Object transformValue(Annotation annotation, Object currentValue);
}
interface ConsumerAnnotationProcessor {
void consumeValue(Annotation annotation, Object currentValue);
}
第1のオプションはあまり明確ではありませんが、第3のオプションは3つのほぼ同じインターフェイスでAPIを汚染します。
何を(あなたはまずAPIユーザーとして)選ぶでしょうか?その理由は何ですか?
ありがとうございます!