模板模式违反了封装?

时间:2009-11-25 06:58:43

标签: refactoring design-patterns

请看一下我提出的这段代码。

    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,我的代码几乎一直很糟糕,请告诉我这里最好的方法。

1 个答案:

答案 0 :(得分:2)

ExecuteCommandPrintResult设为受保护而非公开。通过这样做,它只对子类可见,但对一般客户端代码不可见。