小编抽空完成了一个微信小程序商城,从中学到了小程序Api开发的流程 与 AOP面向切面编程思想的好处。
顺便总结一下开发小程序Api的思路:

小程序商城API.jpg

以上是整个小程序Api的开发思路图。
从上图看出整个小程序包括很多个模块(banner,产品,订单,支付等),每一个模块都包含(控制层,Model层,验证层)。
该项目把其中的Model层基类,控制层基类,异常处理层基类,以及验证层基类单独地提取出来,给各个小程序模块调用,体现了Aop面向切面的编程。
微信小程序开发流程:
1.构建验证层 与 异常处理层 (AOP思想)
2.完成各个模块的业务代码 (如上图右侧)

Aop思想体现
1.无论是获取banner或者获取订单,产品等都需要我们验证各个输入参数的格式是否正确,如果不正常就需要进行异常处理抛出错误。
2.把验证层与全局异常层单独提取出来,再开发别的业务逻辑的时候,就不用再写一遍,直接调用该层。

/**
 * Created by Cat.
 * User: Administrator
 * Date: 2019/2/14
 * Time: 20:12
 */
class Banner
{

    public function  getBanner($id){
    new IDMustBePostiveInt(); //全局验证层//全局验证层//全局验证层//全局验证层//全局验证层
    $banner = BannerModel::getBannerByID($id);
     if(!$banner){
           throw new BannerMissException();//异常处理层//异常处理层//异常处理层//异常处理层//异常处理层
       }
     return json($banner);
    }
}
class Product
{
   public function getRecent($count = 15 ){
       new Count();
       $product = ProductModel::getMostRecent($count);
       if($product->isEmpty()){
           throw new ProductException();//异常处理层//异常处理层//异常处理层//异常处理层//异常处理层
       }
       $product=$product->Shopfadden(['summary']);
       return json($product);
   }

小编的BannerMissException() 与 ProductException() 都是统一继承BaseException这个基类,单独把这个基类提取出来实现AOP思想.
我们一般做活动的时候,一般对每一个接口都会做活动的有效性校验(是否开始、是否结束等等)、以及这个接口是不是需要用户登录。

以前编程流程按照正常的逻辑,我们可以这么做。

这里写图片描述

这有个问题就是,有多少接口,就要多少次代码copy。对于一个“懒人”,这是不可容忍的。好,提出一个公共方法,每个接口都来调用这个接口。这里有点切面的味道了。

这里写图片描述

同样有个问题,我虽然不用每次都copy代码了,但是,每个接口总得要调用这个方法吧。于是就有了切面的概念,我将方法注入到接口调用的某个地方(切点)。

这里写图片描述

这样接口只需要关心具体的业务,而不需要关注其他非该接口关注的逻辑或处理。

<以上资讯仅供参考,如果您需解决具体问题,建议您关注作者;如果有软件产品开发需求,可在线咨询加速度产品经理获取方案和报价>

****更多行业产品开发方案,请关注jsudo加速度 https://www.jsudo.com***

【加速度jsudo(www.jsudo.com)】是国内知名企业数字化建设提供商,为企业提供电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售等)、智慧园区建设、数字化营销、人才外包等服务,点击这里查看了解更多行业解决方案。