我正在尝试为应该具有启动、停止、恢复等方法的服务定义接口。
但是有些服务可以是异步的,需要异步实现相同的方法(启动、停止和恢复)。这里还有一个警告是异步方法也接受cancellationToken
问题 某些服务可以启动异步并停止同步。遵循ISP(接口隔离原则)。如果我们创建一个可消耗的接口,即
public interface IStartable
{
void Start();
}
public interface IStopable
{
void Stop();
}
public interface IStartableAsync
{
Task StartAsync(CancellationToken cancel);
}
public interface IStopableAsync
{
Task StopAsync();
}
public interface IStartStoppable: IStartable, IStopable
{}
public interface IStartStoppableAsync: IStartableAsync, IStopableAsync
{}
正如我们在上面看到的,它需要创建太多各种组合的接口。
有没有更好的设计方法,相对简单且可维护?