仓库模式

最直接的意思就是:

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 仓库模式 文件之间接口与实现操作的更多相关文章

  1. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  2. Laravel与Repository Pattern(仓库模式)

    为什么要学习Repository Pattern(仓库模式) Repository 模式主要思想是建立一个数据操作代理层,把controller里的数据操作剥离出来,这样做有几个好处: 把数据处理逻辑 ...

  3. linux – tty,ttyS,pts,ptmx,vcs,vcsa设备文件之间的区别?(/dev/tty等)

    linux – tty,ttyS,pts,ptmx,vcs,vcsa设备文件之间的区别? 终端有字符终端和图形终端两种模式.在linux的图形环境下,我们可以通过鼠标点击来完成所有的管理任务,这是图形 ...

  4. 【ASP.NET Core】选项模式的相关接口

    在 .NET 中,配置与选项模式其实有联系的(这些功能现在不仅限于 ASP.NET Core,而是作为平台扩展来提供,在其他.NET 项目中都能用).配置一般从多个来源(上一篇水文中的例子,记得否?) ...

  5. C#对象与XMl文件之间的相互转换

    C#提供三种序列化方式,分别为: 1.是使用BinaryFormatter进行串行化: 2.使用SoapFormatter进行串行化: 3.使用XmlSerializer进行串行化.其中对于Binar ...

  6. Linux文件描述符与打开文件之间的区别(转载)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239   1. 概述     在Linux系统中一切皆可以看成是文件,文件又可分为: ...

  7. Linux中的文件描述符与打开文件之间的关系

    Linux中的文件描述符与打开文件之间的关系 导读 内核(kernel)利用文件描述符(file descriptor)来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描 ...

  8. Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列

    http://blog.csdn.net/cywosp/article/details/38965239 1. 概述     在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件. ...

  9. .h头文件、 .lib库文件、 .dll动态链接库文件之间的关系

    转自.h头文件. .lib库文件. .dll动态链接库文件之间的关系 h头文件作用:声明函数接口 dll动态链接库作用:含有函数的可执行代码 lib库有两种: (1)静态链接库(Static Liba ...

随机推荐

  1. TinyXML2 使用

    TinyXML2 TinyXML2 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手. ...

  2. 基于KVM的虚拟机创建

    KVM基本介绍:   KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中,KVM目前 ...

  3. 十、lambda表达式、内置函数之filter、map、reduce

    lambda表达式   学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'ale ...

  4. python之线程和进程(并发编程)

    python的GIL In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native ...

  5. pycharm调试添加命令行参数

    UI界面: Run->Edit Configurations->Parames

  6. 【jupyter】文件解压

    Jupyter使用便捷,但是不能上传文件夹.可以将文件夹压缩,上传后再利用python或者terminal进行解压. windows 可以用python的zipfile包来解压.比如: import ...

  7. vue-cli3.0启动项目,在局域网内其他电脑通过自己ip访问

    最近一直在使用vue-cli3.0做项目, package.json中配置后,自启动项目,也就没留意过小黑窗, "scripts": { "serve": &q ...

  8. Windbg Register(寄存器)窗口的使用

    寄存器是位于在 CPU 的小易失性内存单位. 许多寄存器专用于特定用途,并可用于用户模式应用程序使用的其他寄存器. 基于 x86 和基于 x64 的处理器在有可用的寄存器的不同集合. 如何打开寄存器窗 ...

  9. go.rice 强大灵活的golang 静态资源嵌入包

    以前简单介绍过packr ,statik 等静态资源嵌入工具包的使用,go.rich 是一个与packr 类似的静态资源嵌入包,使用简单 功能强大 项目结构 golang mod   go mod i ...

  10. vs连接oracle

    参考: https://www.cnblogs.com/gguozhenqian/p/4262813.html