首先有个接口

  interface Visit {

    public function go ();

  }

然后有三个类Leg,Car,Train

  class Leg implements Visit {

    public function go (){

      echo "walt to 新疆";

    }

  }

  class Car implements Visit {

    public function go () {

      echo "drive car to 新疆";

    }

  }

  class Train implements Visit {

    public function go () {

      echo "go to 新疆 by train";

    }

  }

依赖关系:有一个旅行者Traveller

  class Traveller  {

    protected  $trafficTool;

    public function __construct () {

      //依赖产生

      $this->trafficTool = new Leg();     //选择步行

    }

    public function visitXinjiang () {

      $this->trafficTool->go();           //去新疆玩啦

    }

  }

  $visit = new Traveller();

  $visit->visitXinjiang();

简单工厂模式:

  //工厂

  class TracfficToolFactory{

    public function createTracfficTool($name) {

      switch ($name) {

        case 'Leg':

          return new Leg();

          break;

        case 'Car':

          return new Car();

          break;

        case 'Train':

          return new Train();

          break;

      }

    }

  }

  //Traveller

  class  Traveller {

    protected $TrafficTool;

    public function createTraffic ($name) {

    $this->TrafficTool = new TracfficToolFactory()->createTracfficTool($name);

    }

    public function visitXinjiang () {

      $this->TrafficTool->go();

    }

   }

  $traffic = new Traveller();

  $traffic->createTraffic('Leg');  

  $traffic->visitXingjiang();

Laravel依赖的更多相关文章

  1. Laravel 依赖注入原理

    众所周知 Laravel 的文档对于依赖注入只写了如何使用,相信大多数人对于他的实现原理并不太清楚.虽然使用过程中并不需要关心她的原理,但是了解原理让你使用起来更自信.这个帖子就通过一个小 demo ...

  2. laravel依赖注入 容器

    [看完就懂]Laravel 服务容器,IoC,DI      DI DI就是常说的依赖注入,那么究竟什么是依赖注入呢? 打个比方,电脑(非笔记本哈)需要键盘和鼠标我们才能进行操作,这个‘需要’换句话说 ...

  3. php+laravel依赖注入浅析

    laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好. 通常我们的调用如下. $config = $container->make('c ...

  4. laravel依赖注入浅析

    laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好. 通常我们的调用如下. $config = $container->make('c ...

  5. laravel 依赖注入

    <?php interface Animal{ public function attack(); public function talk(); } class People implemen ...

  6. laravel 依赖注入 接口设计

    假设我现在需要做一个支付服务,那么我先设计一个接口 interface PayInterface{ public function pay(Order $order) : string; } 然后实现 ...

  7. Laravel 4 系列入门教程(一)

    默认条件 本文默认你已经有配置完善的PHP+MySQL运行环境,懂得PHP网站运行的基础知识.跟随本教程走完一遍,你将会得到一个基础的包含登录的简单blog系统,并将学会如何使用一些强大的Larave ...

  8. Laravel - 1

    Laravel - 1 Laravel是一个很强大又非常优雅的php框架,但是Laravel的很多组件都是由社区协作的结果,Composer是php开发的一个依赖管理工具,但是墙把绝大多数的开发者堵在 ...

  9. Laravel 5.5 文档 ] 快速入门 —— 安装配置篇

    服务器要求 Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有 ...

随机推荐

  1. day02 mysql基本语句 存储引擎 数据类型 完整性约束

    day02 mysql   一.sql的基本语句     系统数据库         information_schema: 虚拟库, 不占磁盘空间(在内存汇中): 存的是数据库启动后的一些参数, 如 ...

  2. docker gitlab backup

    说明:下面命令中带有<your container name>字,是 gitlab 容器的名称,请按实际情况进行代替 在创建备份之前,你不需要停止任何东西 docker exec -t & ...

  3. Ubuntu16.04 使用PPA安装JDK8

    安装Java 8 ( 支持 Ubuntu 10.04 - Ubuntu 16.04 ) 1.如果你在 Ubuntu 软件中心安装过 OpenJDK,请先使用如下命令将其删除: sudo apt-get ...

  4. js面向对象的几种方式----工厂模式、构造函数模式、原型模式

    对象的字面量 var obj={} 创建实例对象 var obj=new Object() 工厂模式 function cPerson(name,sex,age){ var o = new Objec ...

  5. HTML中的相对路径与绝对路径

    路径 实际工作中,通常新建一个文件夹专门用于存放图像文件,这时再插入图像,就需要采用“路径”的方式来指定图像文件的位置. 路径可以分为: 相对路径和绝对路径 相对路径 图像文件和HTML文件位于同一文 ...

  6. NX-二次开发创建圆弧(三点圆弧)UF_CURVE_create_arc_3point

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> UF_initialize(); //起点 ]; ArcStartPoint[ ...

  7. (转)实现这两个接口ModelDriven<T>,Preparable有什么用?

    转:http://www.cnblogs.com/guanghuiqq/archive/2012/08/24/2654300.html 实现了ModelDriven就必须实现getModel这个方法, ...

  8. POJ3241 最小曼哈顿距离生成树 - 真有趣哇

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  给你n个坐标, ...

  9. O(n)线性时间求解第k大-HDU6040-CSU2078

    目录 目录 思路 (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 HDU6040:传送门  \(m(m\leq 100)\)次查询长度为\(n(n \leq 1e7)\)区间的 ...

  10. Java-javaFx库运用-时钟显示

    JavaFx是开发Java GUI程序的新框架.JavaFX应用可以无缝地在桌面或web浏览器中运行.具有内建的2D.3D动画支持,以及视频和音频的回放功能,可以作为一个应用独立运行或者在浏览器中运行 ...