1
請看看我想出的這段代碼。模板模式違反封裝?
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函數。我覺得我需要爲一個函數定義一個模板,但不會暴露該模板中使用的其他函數!重構傢伙,我的代碼幾乎一直都很爛,請讓我知道什麼可能是最好的出路。
謝謝,這很快。 – theraneman 2009-11-25 07:10:37