亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Service層的是否必要性分析及案例

韓冰 / 1734人閱讀

摘要:有什么作用層的作用就是把這些需要多個參與的復(fù)雜業(yè)務(wù)邏輯多帶帶封裝出來,這些之間不再發(fā)生直接的依賴,而是在層內(nèi)協(xié)同完成邏輯。層的第一個目的其實就是對層進行解耦。相關(guān)資料框架中,有必要再分離層么

序言

此前,我看過這樣的一個提問“Yii2框架中,有必要再分離service層么?”,從別人的回答中,自己也收獲了答案,但我覺得還需要有個活生生的粟子,才具有更加清晰明了和強有力的說服力。如對我的實戰(zhàn)經(jīng)歷感興趣的繼續(xù)往下看,喜歡的還可以點擊推薦和收藏。在舉粟子前,我先講講service是什么?有什么作用吧?免得還有人糊涂。
1、service是什么?
在面向OO的系統(tǒng)里,service就是biz manager,在面向過程的系統(tǒng)里service就是TS腳本。
2、service有什么作用?
service層的作用就是把這些需要多個model參與的復(fù)雜業(yè)務(wù)邏輯多帶帶封裝出來,這些model之間不再發(fā)生直接的依賴,而是在service層內(nèi)協(xié)同完成邏輯。service層的第一個目的其實就是對model層進行解耦。

需求分析

1、在Yii2框架中建立service層,專門處理公共且復(fù)雜的業(yè)務(wù)邏輯。

效果圖

1、在common下建立個service層。

2、部分公共數(shù)據(jù)處理邏輯(主要的數(shù)據(jù)處理都寫在這里)。

代碼分析

1、在commonservice下寫個CluesBranchService.php文件,CluesBranchService類繼承本模塊主要的models類Chance。凡是關(guān)于Chance的公共業(yè)務(wù)邏輯都往這個文件里寫。

namespace commonservice;

use Yii;
use apimodulesv1modelsSales;
use apimodulesv1chancemodelsChance;

/**
 * //下屬的線索公共數(shù)據(jù)處理邏輯
 */
class CluesBranchService extends Chance
{   
    //下屬的線索列表
    public static function getIndex()
    {    
        $SalesModel = new Sales(); 
        $uids = $SalesModel->sevenChild(Yii::$app->user->id);
        if(count($uids)){
            $query = Chance::find()->where(["in","owner_id",$uids]);
        }else{
            $query = Chance::find()->where(["owner_id"=>"-1"]);
        }
       return $query;
    }
}

2、Controllers里調(diào)用。

use commonserviceCluesBranchService;

$query = CluesBranchService::getIndex();

注釋:這里返回的是$query,而不是查詢的結(jié)果,用過Yii2的都知道列表實現(xiàn)分頁用的是ActiveDataProvider,不需要查出結(jié)果,為了統(tǒng)一起來所以這里直接返回$query。如有特殊需要加where、andWhere或者獲取數(shù)據(jù)結(jié)果的可以這樣$query->where(["條件"]);$query->all()。

分析總結(jié)

以上是一個業(yè)務(wù)邏輯比較簡單的service層的實現(xiàn)方式,看到這里可能還有人疑惑,到底應(yīng)不應(yīng)該分離service層?
簡單粗暴的總結(jié)來說,如果你的某個業(yè)務(wù)邏輯,需要用到多個model,就放到service層里面去,如果只是這個model自己的事,跟其它的model沒有任何關(guān)系,放到model里面就好。
如果你的系統(tǒng)本來就很小,業(yè)務(wù)邏輯也超級簡單,也不存在長期演進迭代的需求,隨你怎么高興怎么寫都行。

相關(guān)資料

Yii2框架中,有必要再分離service層么?:https://segmentfault.com/q/1010000003849810

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/31949.html

相關(guān)文章

  • 1、管家婆項目

    摘要:項目訓(xùn)練目標項目訓(xùn)練目標項目目標綜合運用前面所學(xué)習(xí)的知識點熟練層層層之間的方法相互調(diào)用操作熟練操作數(shù)據(jù)庫表完成增刪改查了解公司項目開發(fā)的流程,充分的掌握項目需求分析設(shè)計與功能的代碼實現(xiàn)。 01項目訓(xùn)練目標 * A: 項目訓(xùn)練目標 * a: 項目目標 * 綜合運用前面所學(xué)習(xí)的知識點 * 熟練View層、Service層、Dao層之間的方法相互調(diào)用操...

    binaryTree 評論0 收藏0
  • web前端性能優(yōu)化總結(jié)

    摘要:但是還是會阻塞事件,所以會可能在觸發(fā)前或后執(zhí)行,但是一定會在事件前觸發(fā)。當(dāng)監(jiān)聽到該圖片元素進入可視窗口時,即將自定義屬性中的地址存儲到屬性中,達到懶加載的效果。當(dāng)代碼執(zhí)行,線程被凍結(jié)。所以的性能讓變慢。 概括 涉及到的分類 網(wǎng)絡(luò)層面 構(gòu)建層面 瀏覽器渲染層面 服務(wù)端層面 涉及到的功能點 資源的合并與壓縮 圖片編解碼原理和類型選擇 瀏覽器渲染機制 懶加載預(yù)加載 瀏覽器存儲 緩存機制...

    evin2016 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<