gen_server设计思想

本文介绍gen_server行为模式的设计思想,gen_server的使用请看上一篇文章”gen_server行为模式“。gen_server行为模式设计目的是分离通用代码和具体业务代码,通用代码由行为模板实现,具体业务代码通过回调函数让用户实现。用户只需实现具体业务逻辑,不用考虑消息通信、循环维护,使用户实现client-server功能变得简单轻松。

先看银行帐号的简单例子,bank1开启一个进程,处理存取款信息:

上面代码既要维护业务逻辑,又要维护进程循环,代码显得复杂,不好维护。可以把进程循环,收发消息封装到server中作为通用代码,具体业务逻辑通过回调Mod实现:

使用server模块后,bank代码改为:

bank2的进程循环、消息处理交给server处理,bank2只需专注业务处理,代码变得简单、清晰。同时server代码隐藏了消息,循环,即使server代码内部逻辑改变,或扩充功能,也不会影响到bank2功能,server代码还可以被不同的模块重用,通过回调Mod可以实现不同的业务逻辑。

Erang/OTP把server行为抽象到gen_server行为模式中,用户只需实现gen_server行为中的预计定义接口便可完成client-server  功能。 类似地gen_fsm, gen_event, supervisor 行为模式也是基于这一思想实现。

Erlang技术分享内容均为原创,转载请标明本文地址
本文链接:http://www.kongqingquan.com/archives/419

此条目发表在Erlang分类目录,贴了, 标签。将固定链接加入收藏夹。

gen_server设计思想》有 1 条评论

  1. Pingback引用通告: gen_server行为模式 | Erlang技术分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">