laravel 5.5 倉庫模式 文件之間接口與實現操作
倉庫模式
最直接的意思就是:
Eloquent數據(數據庫)查詢 方便快捷,簡單明了。自己怎麽寫的,就怎麽去調用,完全ok~
本質意思:
倉庫就像是業務內部的數據對象集合,負責協調業務和數據映射層之間的關系,客戶端對象只需要構造一個清晰的查詢請求, 然後提交給倉庫就行了。
倉庫裏的對象可以通過客戶端的請求進行增刪改查,客戶端可以在某個場景下,通過一個簡單的對象集合或者倉庫中映射的代碼實現合適的操作。
倉庫模式把數據訪問邏輯和業務邏輯中實體訪問分開了,數據訪問邏輯和業務邏輯只能通過接口來進行數據操作。
簡單來說, 倉庫模式就是一種存放數據訪問邏輯的容器,它向業務層屏蔽了數據訪問邏輯的細節, 也可以這樣理解, 在不清楚數據層設計結構的情況下, 我們也能按照業務邏輯來訪問數據層。
這樣做(數據訪問層和業務邏輯分離) 有很多好處:
- 數據訪問邏輯集中管理, 方便維護代碼
- 業務和數據訪問邏輯可以分開測試
- 減少重復代碼
- 減少編程中的錯誤
↓↓↓下面就是怎麽去設計這個倉庫模式了↓↓↓ (?⊙ω⊙)?
先在 Providers(服務商)文件夾下創建一個自己定義的文件比如:RepositoryServiceProvider.php (使用artisan創建比較方便 php artisan make:provider RepositoryServiceProvider)
然後要將這個RepositoryServiceProvider.php 的類註冊一下才可以的 -> 在Config目錄下App.php中
在App目錄下創建一個自定義的文件夾(最好和Providers 裏面創建的文件名字一樣。方便記憶)
在Repository文件目錄下創建相應的文件夾(接口類和接口實現類)
在兩個文件夾下面創建相應的文件(先定義接口 -> Interface文件夾下)TestInterface.php
Repositories 文件目錄下 TestRepositories.php
寫完這兩個文件的之後 接下來就要去第一個創建的文件中的register方法添加一行代碼了 $this->app->bind (RepositoryServiceProvider.php)
這塊部分叫做 “綁定接口”
也就是說ServiceProvider是Laravel IOC容器實現動態換接口實現的地方,所以在這裏綁定一下,在使用的時候,不直接使用接口實現,而是用ioc容器解析接口,它會幫你自動找到對應好的實現。這就意味著,以後需要更換實現,可以在這裏更換
接下來就是調用剛才自己寫的接口了 在 Controllers 自己創建的控制器下調用~
然後 就完成了 倉庫模式 的使用方法 So Easy~~~
laravel 5.5 倉庫模式 文件之間接口與實現操作