接口只是与其他代码的契约.另一方面,抽象类可以更多.他们能:
在模板方法模式中可以找到一个用例的一个很好的例子.你可以有一个命令的接口:
public interface IMyCommand
{
void Execute();
}
Run Code Online (Sandbox Code Playgroud)
并且您有一组遵循特定顺序的命令.要强制执行此操作,您可以从抽象基类派生它们:
public abstract class MyTemplateClass : IMyCommand
{
public void Execute()
{
MyProcessFirst();
MyProcessSecond();
}
protected abstract void MyProcessFirst();
protected abstract void MyProcessSecond();
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用模板方法后面的对象派生自抽象基类,而其他对象只需实现该接口.