#1 jake

在数据库高级开发中,我们可以通过“封装业务数据”来增强应用程序的扩展性和重用性。

封装业务数据是将部分常用的、复杂的数据运算封装到spModel的子类(数据模型类)中,从而达到以下多个目的:


  • 减轻控制器代码量,使得用户与系统交互过程更清晰。
  • 复用代码,应用系统的“业务”是“领域通用”的,一次编写可以在多处使用,甚至是移植到第二个系统中使用。
  • 架构清晰,有利于快速开发。
  • 分工明确,可以分配专人负责开发并维护业务代码,架构设计者只需要规范接口数据即可。
  • 在编程过程和二次开发中,出现问题将很轻易可以定位(业务逻辑问题或交互问题),从而增强应用程序健壮性。
  • 易于维护,业务逻辑升级将只需要保持类库接口的兼容性,即可不做过多的工作可以升级到新版本。
  • 开发人员认知一致,不会因为系统交互的修改(控制器范畴)而失去对业务逻辑的把握。
  • 业务迭代性强,开发者只需要知道接口的使用方式而不需要考虑业务实现细节即可完成工作。

在SpeedPHP框架中,spModel模型类是第一层的业务封装,spModel封装了大部分日常对数据库的直接操作,使得开发者可以直接调用这些封装的业务。所以,在大多数情况下,spModel的子类(模型类)都不需要进行封装。

可以考虑封装业务数据的情况:


  • 当业务逻辑非常复杂,不能直接通过spModel的操作来实现的功能,为了控制器端清晰和更有条理,可以考虑将这些业务操作封装起来。
  • 在整个应用程序中,使用得比较多的功能,如在create操作中填充当前时间的字段,update操作中填充更新时间的字段等的时候,可以考虑覆盖spModel的create和update等操作(继承),加入这些功能。
  • 当业务逻辑经常被重用的时候,如用户登录验证、注册写入等操作的时候,可以考虑封装,以便在第二个应用程序中复用。
  • 在SpeedPHP框架的优化建议中,在经常使用到的业务逻辑中(如首页多分类前十文章显示),可以考虑将其封装起来,以便spCache(函数缓存器)进行优化的缓存。

在SpeedPHP框架的扩展中,业务封装也同样重要。在上面提到的“当业务逻辑经常被重用的时候可考虑封装”,就是扩展类业务封装的主旨,扩展类实际上就是一些供开发者多次重用的代码片段。


2012-08-04 23:02:49