In general, why should you strive for three to five members per interface?
And then, what's wrong with something like this?
interface IRetrieveClient
{
Client Execute(string clientId);
}
interface ISaveClient
{
bool Execute(Client client);
}
interface IDeleteClient
{
bool Execute(string clientId);
}
When I see the this, it screams "Antipattern!" because the interface isn't accomplishing anything, especially when the designer of the application intends for each interface to have a one-to-one relationship with the class that implements it.
Read: Once an interface is implemented, it is never reimplemented again. Now, I didn't design this system and it seems to me like what they wanted to do was implement some version of the command pattern, but when speaking to the developers, they don't seem to get it.
This looks entirely reasonable to me. I'm perfectly happy to have a small number of methods (or indeed one method) per interface.
Note that the benefit of combining interfaces is that you can (say) selectively present different views of a class by casting appropriately. e.g. you can construct/modify a class and then present it (narrow it) via a more restricted interface (e.g. having a read-only interface)
e.g.
A class can implement both interfaces such that you can mutate it, and then you can present it to clients simply as a
Readable
object, such that they can't mutate it. This is possible due to subdividing the interfaces.