public interface Behavior {
void execute();
}
public class BehaviorA implements Behavior {
@Override
public void execute() {
}
}
public class BehaviorB implements Behavior {
@Override
public void execute() {
}
}
<bean id="behavior" class="com.example.BehaviorA" />
public class Main {
private Behavior behavior;
public void setBehavior(Behavior behavior) {
this.behavior = behavior;
}
public void doSomething() {
behavior.execute();
}
public static void main(String[] args) {
Main main = new Main();
main.setBehavior(new BehaviorA());
main.doSomething();
try {
String className = "com.example.BehaviorB";
Behavior behavior = (Behavior) Class.forName(className).newInstance();
main.setBehavior(behavior);
main.doSomething();
} catch (Exception e) {
e.printStackTrace();
}
}
}