国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

依賴注入小案例

Original 2019-02-21 11:09:53 241
abstract:本章通過(guò)對(duì)工廠模式和依賴注入模式的學(xué)習(xí),了解了工廠模式主要是通過(guò)在工廠類中統(tǒng)一創(chuàng)建并返回其他類的對(duì)象;依賴注入主要通過(guò)構(gòu)造函數(shù)或者普通方法傳對(duì)象參數(shù)的方式,把具體對(duì)象注入到方法中。通過(guò)兩種設(shè)計(jì)模式,解決了原先在類中直接創(chuàng)建其他類所導(dǎo)致的高耦合問(wèn)題,實(shí)現(xiàn)解耦。實(shí)現(xiàn)代碼如下:工廠模式代碼:Factory.php<?php namespace app\index\controller;

本章通過(guò)對(duì)工廠模式和依賴注入模式的學(xué)習(xí),了解了工廠模式主要是通過(guò)在工廠類中統(tǒng)一創(chuàng)建并返回其他類的對(duì)象;依賴注入主要通過(guò)構(gòu)造函數(shù)或者普通方法傳對(duì)象參數(shù)的方式,把具體對(duì)象注入到方法中。通過(guò)兩種設(shè)計(jì)模式,解決了原先在類中直接創(chuàng)建其他類所導(dǎo)致的高耦合問(wèn)題,實(shí)現(xiàn)解耦。實(shí)現(xiàn)代碼如下:

工廠模式代碼:

Factory.php

<?php

namespace app\index\controller;


class Factory
{
    public static function  create($class)
    {
        switch (strtolower($class))
        {
            case 'boy':
                return new Boy();
                break;
            case 'girl':
                return new Girl();
                break;
        }
    }
}


class Boy
{
    public function  show()
    {
        return '我是男孩';
    }
}

class Girl
{
    public  function  show()
    {
        return '我是女孩';
    }
}

Index.php調(diào)用:

<?php
namespace app\index\controller;

use think\Request;

class Index
{
    public function index()
    {
//        dump(DataBase::getInstance());  //單例模式獲取數(shù)據(jù)庫(kù)配置信息
        return Factory::create('girl')->show();  //工廠模式創(chuàng)建類及調(diào)用類方法

        //通過(guò)依賴注入實(shí)現(xiàn)解耦
//        $girl=new Person();
//        $injection=new Injection($girl);
//        return $injection->getAbility($girl);
    }

    public function hello($name = 'ThinkPHP5')
    {
        return 'hello,' . $name;
    }

    /**
     * 獲取請(qǐng)求參數(shù)
     * @param Request 請(qǐng)求的參數(shù)
     */
    public  function  getParam(Request $request)
    {
        dump($request->param());
    }
}

效果圖:

QQ截圖20190221110637.jpg



依賴注入實(shí)現(xiàn)解耦代碼:

Person.php

<?php
/**
 * Created by PhpStorm.
 * User: Jizp
 * Date: 2019-2-21
 * Time: 10:42
 */

namespace app\index\controller;


class Person
{
    public  function sing()
    {
        return '唱歌';
    }

    public  function  dance()
    {
        return '跳舞';
    }
}

Injection.php

<?php

namespace app\index\controller;


class Injection
{
    private  $done;

    //構(gòu)造函數(shù)依賴注入
    public  function __construct(Person $gril)
    {
        $this->done=$gril->sing();
    }

    public  function  getDone()
    {
        return '我可以'.$this->done;
    }

    //普通方法依賴注入
    public function getAbility(Person $girl)
    {
        return $this->getDone().',也可以'.$girl->dance();
    }
}

Index.php調(diào)用頁(yè)面:

<?php
namespace app\index\controller;

use think\Request;

class Index
{
    public function index()
    {
//        dump(DataBase::getInstance());  //單例模式獲取數(shù)據(jù)庫(kù)配置信息
//        return Factory::create('girl')->show();  //工廠模式創(chuàng)建類及調(diào)用類方法

        //通過(guò)依賴注入實(shí)現(xiàn)解耦
        $girl=new Person();
        $injection=new Injection($girl);
        return $injection->getAbility($girl);
    }

    public function hello($name = 'ThinkPHP5')
    {
        return 'hello,' . $name;
    }

    /**
     * 獲取請(qǐng)求參數(shù)
     * @param Request 請(qǐng)求的參數(shù)
     */
    public  function  getParam(Request $request)
    {
        dump($request->param());
    }
}

效果圖:

QQ截圖20190221110804.jpg

Correcting teacher:韋小寶Correction time:2019-02-21 11:42:20
Teacher's summary:寫(xiě)的很不錯(cuò) 案例模擬的也很棒 ! !學(xué)習(xí)就是這樣要多多去練習(xí)

Release Notes

Popular Entries