
package com.haut.grain.junit.test; public class Command {
private Object state;
public void setState(Object state) {
this.state = state;
}
public Object getState() {
return this.state;
}
public void execute(){
System.out.println("当前的状态是:"+state.toString());
}
}
以上是command类为基类
实现类UpCommand
package com.haut.grain.junit.test; public class UpCommand extends Command{ @Override
public void execute() {
System.out.println("向上命令的状态是:"+this.getState());
} }
CommandManager类
package com.haut.grain.junit.test; public abstract class CommandManager { public void process(Object commandState) {
// grab a new instance of the appropriate Command interface
Command command = createCommand();
// set the state on the (hopefully brand new) Command instance
command.setState(commandState);
command.execute();
} // okay... but where is the implementation of this method?
protected abstract Command createCommand();
}
配置文件
<bean id="upCommand" class="com.haut.grain.junit.test.UpCommand" scope="singleton"></bean>
<bean id="commandManager" class="com.haut.grain.junit.test.CommandManager">
<lookup-method name="createCommand" bean="upCommand"/>
</bean>
总结:上面就是通过createCommand方法来注入command对象,当是抽象方法时替换,如果是实现的方法了覆盖。