日期:2014-05-20  浏览次数:20686 次

如何合理设计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”?