请看一下我提出的这段代码。
abstract class Command
{
public void Execute(string[] commandParameters)
{
CommandResult result = ExecuteCommand(commandParameters);
PrintResult(result);
}
public abstract CommandResult ExecuteCommand(string[] commandParameters);
public abstract void PrintResult(CommandResult result);
}
将从此Command类继承几个命令。每个命令都会覆盖ExecuteCommand和PrintResult。虽然使用这种设计,对于客户端代码,我暴露了很奇怪的Execute和ExecuteCommand函数。我觉得我需要为函数定义一个模板,但不要暴露该模板中使用的其他函数!重构fellas,我的代码几乎一直很糟糕,请告诉我这里最好的方法。
答案 0 :(得分:2)
将ExecuteCommand
和PrintResult
设为受保护而非公开。通过这样做,它只对子类可见,但对一般客户端代码不可见。