如何合理设计API?
如要开发一个同步通讯库给其他开发人员用。
客户端提供send操作,服务端提供recv,send操作。
就是客户端提供发送数据并返回接收到的数据,服务端提供接收请求后做业务处理然后提供发送响应操作的API。
客户端肯定没问题。就是Data send(Data request)。但服务端有两种方式。如
1>
Data request = recv();
//业务处理
send(response);
2>
void recvAndSend(IProcess process);
Data process(Data request);
即一种是分开的两个API,一个是提供IProcess接口。如何提供才更好呢?
第一种可以让用户去处理并发等操作,如多线程处理等。第二种需要用户实现指定的接口,然后使用通讯库提供的多线程处理。如何选择呢?
------解决方案--------------------
API 的设计要尽量让使用者能更多地进行调用及控制。
IProcess 为什么不直接用 Process 作为接口名,要前面加个“I”?