zoukankan      html  css  js  c++  java
  • laravel 设计思想简单了解

    服务容器

    laravel框架中 服务容器是整个系统功能调度配置的核心,在系统运行过程中动态的为系统提供需要的服务 从而实现了解耦
    

    控制反转(IOC)

    控制反转是一种设计模式 主要解决了系统组件之间的相互依赖关系 。
    
    工厂模式 工厂模式中 一般会有一些共同的接口 通过调用不同的类 来实现相同的结果 比如出去旅游 有的人骑自行车 那就new一个自行车类 有的人可能坐火车 还有的人可能坐飞机 轮船或者其他的。也就是说 工厂模式中 需要哪些类 则工厂就生成哪些功能 这个时候就需要动态的修改工厂 但随着需要的功能越来越多 那么程序必然会变得庞大 耦合性非常高。
    
    而控制反转就是要解决上面的问题 它将组件间的依赖关系 从程序内部提取到外部容器来管理 而依赖注入 是指组件的依赖通过外部参数或者其它形式注入到容器 等到需要的时候 在从容器中取出来即可
    
    图片来自 http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/
    

    服务提供器 (Service Providers)

    为了让依赖注入的代码不至于写乱,Laravel 搞了一个 服务提供器(Service Provider)的东西,它将这些依赖聚集在了一块,统一申明和管理,让依赖    变得更加容易维护。 
    

    两种方式添加服务

    • 1.要在每个环境下都要加载 编辑/config/app.php 将类加到providers数组中即可自动加载
    • 2.按需加载 根据不同环境加载 /app/Providers/AppServiceProvider.php 下面的 register方法 通过判断不同的环境然后加载不同的服务

    门面模式(Facade)

    为应用程序的服务容器中可用的类提供了一个「静态」接口 Laravel自带的门面,以及创建的自定义门面,都会继承自IlluminateSupportFacadesFacade基类。门面类只需要实现一个方法:getFacadeAccessor。正是getFacadeAccessor方法定义了从容器中解析什么,然后Facade基类使用魔术方法从你的门面中调用解析对象。
    
    好处1 不需要收到New对象 简化了书写
    好处2 实现了统一的API 隐藏内部实现 当需要换一种类实现 也不需要改动太多代码
    

    总结

    所以有了控制反转(Inversion of Control)和门面模式(Facade),实际还有 服务提供器(Service Providers)和别名(Alias),我们创建自己的类库和扩展 Laravel 都会方便很多。
  • 相关阅读:
    语音识别系列之区分性训练和LF-MMI【转】
    node、npm安装与升级
    Vue3.0 新特性以及使用经验总结
    div垂直居中的方法
    前端性能优化
    大型网站设计总结
    前端SEO
    前端埋点总结
    jenkins自动构建、自动部署
    Python常见whl文件集合
  • 原文地址:https://www.cnblogs.com/alin-qu/p/8410616.html
Copyright © 2011-2022 走看看