public interface Plugin {
void process(Object data);
}
public class MyPlugin implements Plugin {
public void process(Object data) {
}
}
public class Grafter {
private List<Plugin> plugins;
public Grafter() {
this.plugins = new ArrayList<>();
}
public void registerPlugin(Plugin plugin) {
this.plugins.add(plugin);
}
public void process(Object data) {
for (Plugin plugin : plugins) {
plugin.process(data);
}
}
}
public class Main {
public static void main(String[] args) {
Grafter grafter = new Grafter();
grafter.registerPlugin(new MyPlugin());
grafter.process(data);
}
}