zl程序教程

您现在的位置是:首页 >  其他

当前栏目

接口也是一种合约(严肃脸)

接口 一种 合约
2023-09-14 09:10:45 时间

接口 = 合约

接口也是一种合约,但请记住,合同适用于双方。在大多数情况下,当我们阅读接口文档时,都是从接口客户端的角度来看待接口的,但是如果我们能从接口服务器端来理解,则会有意想不到的收获。

角色扮演开始

让我们举个例子:控制面板接口(Interface for control panel)

通常当你有关于控制面板接口的文档的时候,你会认为自己是客户端,比如,文档是这样写的:
当控制面板管理器首次加载”控制面板”应用程序时,它会检索CPIApplet函数的地址,然后使用该地址来调用该函数并传递消息。
下面我们来看看,分别站在不同的角色是如何看待这段接口描述的。

控制面板应用程序:我需要导出一个名为CPIApplet的函数用来接收管理器传过来的信息。
控制面板管理器:我需要使用GetProcAddress来获取客户提供的CPIApplet地址并向它发送消息。

关于消息处理部分,角色扮演如下:
控制面板应用程序:我需要准备好按文档所说的顺序接收消息。
控制面板管理器:我需要准备好按文档所说的顺序发送消息。

文档里还有这么一句:控制面板管理器需要调用FreeLibrary函数来释放控制面板应用程序。
控制面板应用程序:我最好为即将到来的卸载做好准备。
控制面板管理器:我要开始卸载DLL啦。

实际的例子

让我们来写个简单的小程序来演示一下: