降低模块接口复杂度

有两个方案A和B。A和B差异就是,A把数据处理和组装查询条件放在控制器里面。而B把两者放在了功能点里面。如何只看注释,A看不出来功能点是按照什么来查询的,输入的是数组。而B则直观看出输入的是字符串keyword。

参数的定义和功能的定义应该相吻合。类似第一范式设计。

尽量降低模块接口的复杂程度


模块接口是模块与外界进行通信的通道,较复杂的接口往往会带来较高的耦合。因此,应努力降低模块接口的复杂程度。对此,可以从以下两个方面作出考虑:


a.接口参数尽量采用简单数据类型,以使接口容易理解。例如,尽量使用基本字符、整 数类型,而不是数组、指针、结合体类型。

b.限制接口参数的个数。接口参数个数太多,往往是由于模块功能混杂,不得不依靠参 数进行调控。因此,过多的参数往往意味着模块还有进一步分解的必要。

<?php
/**
 * 方案A
 */

/**
 * 公告服务
 */
class AdService
{
   /**
    * 获取公告列表(功能点)
    * @param array $condition 查询条件
    * @param int $page 页码
    * @param int $size 单页数据的条数
    * @return array 查询出来的数据列表,是数组
    */
   public function getAdList($condition = [], $page = 1, $size = 10)
   {
       //查询数据库
       return Db::table('ad')
           ->where($condition)
           ->page($page, $size)
           ->select();
   }
}

/**
 * Web控制器
 */
class AdController
{
    //获取公告列表
    public function getAdList()
    {
        //获取post数据,需要搜索的关键字,用于搜索标题或内容
        $keyword = getPost('keyword');

        //对post数据处理,去掉两端的空白字符
        $keyword = trim($keyword);

        //页码
        $page = getPost('page');
        //单页数据条数
        $size = getPost('size');

        $adService = new AdService();

        //组装查询条件
        $condition = [
            //对标题或内容按照关键词搜索
            'title|content' => ['like', "%$keyword%"]
        ];

        //调用服务中的功能点
        $dataList = $adService->getAdList($condition, $page, $size);
        return json($dataList);
    }
}

<?php
/**
 * 方案B
 */

/**
 * 公告服务
 */
class AdService
{
   /**
    * 获取公告列表(功能点)
    * @param string $keyword 需要搜索的关键字,用于搜索标题或内容
    * @param int $page 页码
    * @param int $size 单页数据的条数
    * @return array 查询出来的数据列表,是数组
    */
   public function getAdList($keyword = '', $page = 1, $size = 10)
   {
       //数据处理,去掉两端的空白字符
       $keyword = trim($keyword);

       //组装查询条件
       $condition = [
           //对标题或内容按照关键词搜索
           'title|content' => ['like', "%$keyword%"]
       ];

       //查询数据库
       return Db::table('ad')
           ->where($condition)
           ->page($page, $size)
           ->select();
   }
}

/**
 * Web控制器
 */
class AdController
{
    //获取公告列表
    public function getAdList()
    {
        //获取post数据,需要搜索的关键字,用于搜索标题或内容
        $keyword = getPost('keyword');

        //页码
        $page = getPost('page');
        //单页数据条数
        $size = getPost('size');

        $adService = new AdService();

        //调用服务中的功能点
        $dataList = $adService->getAdList($keyword, $page, $size);

        return json($dataList);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值