美文网首页
微信小程序开发与AOP编程思想总结

微信小程序开发与AOP编程思想总结

作者: 一生悬命Cat | 来源:发表于2019-02-20 18:11 被阅读0次

    小编抽空完成了一个微信小程序商城,从中学到了小程序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->hidden(['summary']);
           return json($product);
       }
    

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

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


    这里写图片描述

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


    这里写图片描述

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

    这里写图片描述

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

    相关文章

      网友评论

          本文标题:微信小程序开发与AOP编程思想总结

          本文链接:https://www.haomeiwen.com/subject/ibahyqtx.html