如要开发一个同步通讯库给其他开发人员用。客户端提供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接口。如何提供才更好呢?第一种可以让用户去处理并发等操作,如多线程处理等。第二种需要用户实现指定的接口,然后使用通讯库提供的多线程处理。如何选择呢?

解决方案 »

  1.   

    这些你提到的方法是我没有列出来的。我现在要的不是设计什么样的API,而是怎么去设计API接口。
      

  2.   

    API扩展性一定要强,2种方式都可以提供。给用户一个默认的,还可以让他选择别的。不变应万变
      

  3.   

    API 的设计要尽量让使用者能更多地进行调用及控制。IProcess 为什么不直接用 Process 作为接口名,要前面加个“I”?