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

資訊專欄INFORMATION COLUMN

Laravel 中設(shè)計(jì)模式的實(shí)戰(zhàn)分享

李義 / 3619人閱讀

摘要:如何在實(shí)戰(zhàn)中能應(yīng)用上設(shè)計(jì)模式,我思考了接近兩年。最開始我接觸設(shè)計(jì)模式,出發(fā)點(diǎn)就是為了重構(gòu)代碼,以便更好的復(fù)用和測(cè)試。也就是說基本是被當(dāng)成一組靜態(tài)函數(shù)使用的。

MVC是Laravel自帶的,大家也多少都會(huì)用一些。今天我們不談MVC,談一些大中型項(xiàng)目的設(shè)計(jì)思路。


前言

雖然標(biāo)題說是設(shè)計(jì)模式,但是我并不打算去講什么singleton、strategy、factory,不知道為什么,每次看到這幾個(gè)詞匯,我就昏昏欲睡。我個(gè)人認(rèn)為,在非Java語言中,用這些模式很別扭。我曾經(jīng)嘗試過在Unity項(xiàng)目中,使用設(shè)計(jì)模式,但是總覺得是為了模式而模式,根本不能起到我想要的作用。今天在市圖書館,我很努力的想找到一本在PHP或者Laravel環(huán)境下,討論設(shè)計(jì)模式的書,可是沒找到。

起點(diǎn)

我相信很多人學(xué)設(shè)計(jì)模式,都是跟我一樣,聽說這玩意高大上。但是只學(xué)了前三個(gè),也就是上文那三個(gè),之后的就是在夢(mèng)中學(xué)的了。如何在實(shí)戰(zhàn)中能應(yīng)用上設(shè)計(jì)模式,我思考了接近兩年。最最禁忌的是,強(qiáng)行在代碼中使用某個(gè)模式,經(jīng)常會(huì)弄巧成拙,還毀了之前的代碼。最開始我接觸設(shè)計(jì)模式,出發(fā)點(diǎn)就是為了重構(gòu)代碼,以便更好的復(fù)用和測(cè)試。但是直到最近,也就是寫上一篇博客的不久前,我才明白到底該怎么做。

上路

Laravel中自帶MVC,但是我目前的項(xiàng)目已經(jīng)突破一萬行,MVC早已不堪重負(fù)。后來我決心去找一些架構(gòu)設(shè)計(jì),重新整理一下代碼,順利的找到了這個(gè)淺顯易懂的blog,里面附帶三篇獨(dú)立的文章,分別講解了三種模式:Service、Repository、Presenter。不過我實(shí)在太笨了,這樣都理解不了,一開始強(qiáng)行去寫,寫著寫著,才慢慢理解。過程中發(fā)現(xiàn)了Laravel-5.3-Repository,用命令行創(chuàng)建repository文件,稍加修改可以改出一份創(chuàng)建service文件的命令。以及l(fā)aravel-auto-presenter,可以直接將presenter對(duì)象注入到model中,當(dāng)做model原有屬性的替代品(比如重寫默認(rèn)的icon屬性,附加上img標(biāo)簽等)。但是這個(gè)庫不支持自定義函數(shù),只能用來替換以后屬性。最后還有這個(gè)庫laracasts/presenter,這個(gè)是我目前在用的,以trait模式使用,通過調(diào)用$foo->present()->customContent()來使用,只能調(diào)用自定義函數(shù),不支持重寫已有屬性。

終點(diǎn)?

今天寫著寫著,突然有所感悟。都說repository模式可以方便測(cè)試,我現(xiàn)在才明白具體要怎么做。在controller或者sevice中調(diào)用repository的時(shí)候,一定要把變量在調(diào)用的時(shí)候傳入,這樣后續(xù)可以寫單元測(cè)試,只通過變量就能測(cè)試repository是否正確,而不用每次都通過request傳入?yún)?shù)來測(cè)試。也就是說repository基本是被當(dāng)成一組靜態(tài)函數(shù)使用的。

拋磚引玉,希望大家都能討論下,在具體項(xiàng)目中都是怎么設(shè)計(jì)的,我也在學(xué)習(xí)的階段,歡迎回復(fù)交流。

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

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

相關(guān)文章

  • AI開發(fā)書籍分享

    摘要:編程書籍的整理和收集最近一直在學(xué)習(xí)深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學(xué)習(xí),也整理了下自己的學(xué)習(xí)筆記準(zhǔn)備分享出來給大家后續(xù)的文章和總結(jié)會(huì)繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學(xué)習(xí)deep learning深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后...

    huayeluoliuhen 評(píng)論0 收藏0
  • deployer 實(shí)戰(zhàn)經(jīng)驗(yàn)分享

    摘要:開發(fā)完項(xiàng)目,免不了要部署上線。進(jìn)行部署的過程中,項(xiàng)目仍然能夠正常訪問。能十分方便地進(jìn)行回滾。線上測(cè)試與生產(chǎn)使用的是青云的云主機(jī),系統(tǒng)?;蛘呦朕k法設(shè)置實(shí)現(xiàn)免密碼登錄。 開發(fā)完項(xiàng)目,免不了要部署上線。純手動(dòng)操作,登錄、拉代碼、改配置、清緩存、各種服務(wù)重啟等等一條龍下來,人生寶貴的幾分鐘就過去了。而且手動(dòng)操作十分容易出錯(cuò),遺漏部分步驟都有可能產(chǎn)生一些邪門問題。所以我很早就開始尋求一種能輕松部...

    cangck_X 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<