我正试图理解SOLID原则,似乎接口不一定会阻止创建或使用接口中未说明的方法。那么问题是,你应该使用实现带来的额外方法,还是严格遵守接口?
我认为不会,如果你需要使用上述方法,你应该创建另一个接口/类,这样你就可以保持接口分离的原则。
这是对的吗?
您想要针对接口进行操作,因此无法调用任何其他公共方法。
IService service = new Service();
当然,您可以创建任意数量的公共方法,并像这样创建对象。
Service service = new MyService()
然而,我不认为这是最好的做法。
您可以实现多个接口,然后让客户端决定哪个接口适合调用。但是你想把SRP留在你的课堂上。
作为下面的一个例子。Service
有两个公共方法,每个方法都在一个单独的接口中定义。Client
想要直接与IService
合作。然后,更高级别将使用IDisposable
并调用该接口的Dispose()
方法。
interface IService
{
void Execute();
}
class Service : IService, IDisposable
{
public void Execute() {}
public void Dispose() {}
}
class Client
{
private readonly IService _service;
public Client(IService service) => _service = service;
}