依赖注入

依赖注入

  • 简单来说,就是依赖于某个东西,然后给依赖者注入所依赖的东西来解决这个问题

例如:

  1. 商品有积分兑换商品和抢购商品
  2. 订单结算时,订单结算对象依赖于商品表的数据模型
  3. 针对不同商品模型对商品数据的处理,可以给订单结算对象注入不同的商品表模型

代码演示demo

  • 积分商品模型
/**
 * Class Integral
 * @package 积分商品模型
 */
class Integral
{
    /**
     * 积分商品计算方法
     */
    public function handle()
    {
        return '该商品只需要'.$this->price();
    }

    public function price()
    {
        return '积分:500';
    }
}
  • 抢购商品模型
/**
 * Class Shop
 * @package 抢购商品模型
 */
class Shop
{
    public function handle()
    {
        return '该商品只需要'.$this->price();
    }

    public function price()
    {
        return '¥:122元';
    }
}
  • 订单收银台
/**
 * Class Order
 * @package 订单处理
 */
class Order
{
    /**
     * 收银台
     */
    public static function pay($goods)
    {
        return $goods->handle();
    }

}

使用方法

//如果商品是积分
dump(Order::pay((new Integral)));
//如果是抢购商品
dump(Order::pay((new Shop)));

运行截图

屏幕截图 2020-10-19.png

最后:

  • 其实依赖注入早已经在我们的代码中实现
  • 其功能类似于给函数传入一个回调函数

添加新评论