我有建设者:
public abstract class ScriptBuilder {
public void buildScript() {
this.commandList = Lists.newArrayList();
}
public abstract void buildSleepCommand(long time);
public abstract void buildSynchronizationCommand();
public abstract void buildTouchDownCommand(TouchPoint touchPoint);
public abstract void buildTouchUpCommand();
public List<String> getScript() {
return commandList;
}
}
执行:
public class StandardScriptBuilder extends ScriptBuilder{
…
}
我需要构建一个新的构建器,它实现了新的接口。这个新接口基于接口 ScriptBuilder:
class NewScriptBuilder extends StandardScriptBuilder{
public void buildNewCommand(TouchPoint startTouchPoint, TouchPoint endTouchPoint) {
buildTouchDownCommand(startTouchPoint);
buildSynchronizationCommand();
buildTouchDownCommand(endTouchPoint);
}
…
}
是否有任何模式可以扩展现有的构建器界面并保持构建器的优势?我的意思是,如果我们扩展接口,我们不能这样做:
ScriptBuilder builder = new NewScriptBuilder();
…
builder.buildNewCommand;
如果没有解决办法,正常使用吗?:
((NewScriptBuilder)builder).buildNewCommand;
谢谢。
我的意思是:例如,我们可以使用装饰器模式:
public abstract class Decorator extends ScriptBuilder {...} ...
public class OahDecorator extends Decorator {
...
public void buildNewCommand() {
...
}
}
是正常组织代码,还是选择不同的模式是?任务 - 在构建器中添加新方法。