TemplateMethod 模板方法模式是一种让抽象模板的子类「完成」一系列算法的行为策略。换而言之,它是一种非常适合框架库的骨架
用户只需要实现子类的一种方法,其父类便可去搞定这项工作了
半年前有个任务是为认证中心部门制作一个 API 统一框架,部门的技术选型是 Yaf 框架,原因是它的轻量级和速度快
但是由于没有一个详细的架构,开发不受控制,拥有很大的自主性。所以需要规范一个统一的接口开发流程
请求流入控制器的步骤没有改变,新增一个控制器抽象基类直接继承 Yaf\Controller_Abstract,普通的控制器再继承基类
流程的模板用 trait 来实现的效果如下:
1 | trait ApiTemplate |
当请求 api.host/foo 接口时,会解析到 BarController 中的 run() 方法
让开发们按约定设置好 请求参数 和 响应 的配置,只需要关心逻辑处理并写在 exec() 中,整个流程就统一了