首先有个接口

  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. vue之axios的使用

    一.环境安装 1.axios的安装 进入到对应工程目录执行: npm install axios 2.启动测试数据的API 测试项目地址:https://github.com/ShenJianPing ...

  2. Android Studio Download

    { https://developer.android.google.cn/studio }

  3. css制作旋转风车(transform 篇)

    做这个案例之前首先要大概了解CSS的transform的属性 transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 看看效果图 打开的时候自动旋转 ...

  4. thinkphp 快速缓存

    如果你的存储数据没有有效期的需求,那么系统还提供了一个快速缓存方法F可以用来更快的操作. 大理石平台厂家 F方法可以支持不同的存储类型,如果是文件类型的话,默认保存在DATA_PATH目录下面. 快速 ...

  5. hive shell参数

    Hive Shell参数 1.Hive命令行 语法结构 hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e ...

  6. spring-helloworld (1)

    目录 一.eclipse安装springsource-tools插件 二.新建maven工程,引入spring配置 三.添加helloworld类 四.使用springsource-tools插件 创 ...

  7. 2. Vim 概念扫盲

    Frm: http://www.linuxidc.com/Linux/2013-05/84031p2.htm 了解Vim的三个基本模式 当我们安装完一个编辑器后,肯定会打开它,然后在里面输入点什么东西 ...

  8. 初探分布式环境的指挥官ZooKeeper

    目录 1. 从单机到集群,分布式环境中的挑战 1.1 集中式的特点 1.2 集中式的痛点 1.3 从单体到SOA的转变 1.4 分布式服务总体框架 1.5 分布式应用概述 2. ZK基本概念及核心原理 ...

  9. Flutter介绍

    1. flutter简介 Flutter是Google使用Dart语言开发的移动应用开发框架,使用一套Dart代码就能快速构建高性能.高保真的ios和Android应用程序, 并且在排版.图标.滚动. ...

  10. vue条形码+二维码

    <template> <section style="height: 100vh;" class="bg"> <div class ...