摘要:如何在實戰中能應用上設計模式,我思考了接近兩年。最開始我接觸設計模式,出發點就是為了重構代碼,以便更好的復用和測試。也就是說基本是被當成一組靜態函數使用的。
MVC是Laravel自帶的,大家也多少都會用一些。今天我們不談MVC,談一些大中型項目的設計思路。
雖然標題說是設計模式,但是我并不打算去講什么singleton、strategy、factory,不知道為什么,每次看到這幾個詞匯,我就昏昏欲睡。我個人認為,在非Java語言中,用這些模式很別扭。我曾經嘗試過在Unity項目中,使用設計模式,但是總覺得是為了模式而模式,根本不能起到我想要的作用。今天在市圖書館,我很努力的想找到一本在PHP或者Laravel環境下,討論設計模式的書,可是沒找到。
起點我相信很多人學設計模式,都是跟我一樣,聽說這玩意高大上。但是只學了前三個,也就是上文那三個,之后的就是在夢中學的了。如何在實戰中能應用上設計模式,我思考了接近兩年。最最禁忌的是,強行在代碼中使用某個模式,經常會弄巧成拙,還毀了之前的代碼。最開始我接觸設計模式,出發點就是為了重構代碼,以便更好的復用和測試。但是直到最近,也就是寫上一篇博客的不久前,我才明白到底該怎么做。
上路Laravel中自帶MVC,但是我目前的項目已經突破一萬行,MVC早已不堪重負。后來我決心去找一些架構設計,重新整理一下代碼,順利的找到了這個淺顯易懂的blog,里面附帶三篇獨立的文章,分別講解了三種模式:Service、Repository、Presenter。不過我實在太笨了,這樣都理解不了,一開始強行去寫,寫著寫著,才慢慢理解。過程中發現了Laravel-5.3-Repository,用命令行創建repository文件,稍加修改可以改出一份創建service文件的命令。以及laravel-auto-presenter,可以直接將presenter對象注入到model中,當做model原有屬性的替代品(比如重寫默認的icon屬性,附加上img標簽等)。但是這個庫不支持自定義函數,只能用來替換以后屬性。最后還有這個庫laracasts/presenter,這個是我目前在用的,以trait模式使用,通過調用$foo->present()->customContent()來使用,只能調用自定義函數,不支持重寫已有屬性。
終點?今天寫著寫著,突然有所感悟。都說repository模式可以方便測試,我現在才明白具體要怎么做。在controller或者sevice中調用repository的時候,一定要把變量在調用的時候傳入,這樣后續可以寫單元測試,只通過變量就能測試repository是否正確,而不用每次都通過request傳入參數來測試。也就是說repository基本是被當成一組靜態函數使用的。
拋磚引玉,希望大家都能討論下,在具體項目中都是怎么設計的,我也在學習的階段,歡迎回復交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26037.html
摘要:編程書籍的整理和收集最近一直在學習深度學習和機器學習的東西,發現深入地去學習就需要不斷的去提高自己算法和高數的能力然后也找了很多的書和文章,隨著不斷的學習,也整理了下自己的學習筆記準備分享出來給大家后續的文章和總結會繼續分享,先分享一部分的 編程書籍的整理和收集 最近一直在學習deep learning深度學習和機器學習的東西,發現深入地去學習就需要不斷的去提高自己算法和高數的能力然后...
摘要:開發完項目,免不了要部署上線。進行部署的過程中,項目仍然能夠正常訪問。能十分方便地進行回滾。線上測試與生產使用的是青云的云主機,系統。或者想辦法設置實現免密碼登錄。 開發完項目,免不了要部署上線。純手動操作,登錄、拉代碼、改配置、清緩存、各種服務重啟等等一條龍下來,人生寶貴的幾分鐘就過去了。而且手動操作十分容易出錯,遺漏部分步驟都有可能產生一些邪門問題。所以我很早就開始尋求一種能輕松部...
閱讀 3316·2021-11-25 09:43
閱讀 1304·2021-11-23 09:51
閱讀 3609·2021-10-11 11:06
閱讀 3698·2021-08-31 09:41
閱讀 3597·2019-08-30 15:53
閱讀 3510·2019-08-30 15:53
閱讀 965·2019-08-30 15:43
閱讀 3307·2019-08-29 14:02