Un simple exemple de modèle de rappel en java
Chaîne ・ CamelCase → snake_case ・ Inférieur → Supérieur Prenons le processus d'affichage après
NoCallbackPattern.java
public class NoCallbackPattern {
/**
*Serpent de CamelCase_Convertir en cas
*/
private String camelToSnake(String input) {
return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, input);
}
/**
*Convertir de inférieur en supérieur
*/
private String capitalize(String input) {
return input.toUpperCase();
}
/**
*Convertir et afficher
*/
public void print(String input) {
System.out.println(capitalize(camelToSnake(input)));
}
}
Main.java
public class Main {
public static void main(String[] args) {
NoCallbackPattern noCallbackPattern = new NoCallbackPattern();
noCallbackPattern.print("replaceString");
}
}
CallbackPattern.java
public class CallbackPattern {
private List<MyFilter> myFilters;
public CallbackPattern(List<MyFilter> myFilters) {
this.myFilters = myFilters;
}
public void print(String input) {
String output = input;
for (MyFilter myFilter : myFilters) {
output = myFilter.replace(output);
}
System.out.println(output);
}
}
MyFilter.java
public interface MyFilter {
String replace(String input);
}
CamelToSnake.java
public class CamelToSnake implements MyFilter {
@Override
public String replace(String input) {
return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, input);
}
}
Capitalize.java
public class Capitalize implements MyFilter {
@Override
public String replace(String input) {
return input.toUpperCase();
}
}
Main.java
public class Main {
public static void main(String[] args) {
List<MyFilter> filters = Arrays.asList(new CamelToSnake(), new Capitalize());
CallbackPattern callbackPattern = new CallbackPattern(filters);
callbackPattern.print("replaceString");
}
}
** Si vous écrivez en utilisant le modèle de rappel, vous pouvez voir que la classe CallbackPattern n'a pas besoin d'être modifiée lors de l'ajout du traitement de conversion car la méthode d'impression dépend uniquement de l'interface MyFilter **
Recommended Posts