Skip to content

Latest commit

 

History

History
94 lines (70 loc) · 1.62 KB

12.di.md

File metadata and controls

94 lines (70 loc) · 1.62 KB
  • 其他语言著名框架 Java Spring .Net Spring.Net

di 依赖注入 Dependency Injection

  • 对象的创建依靠配置,在外部容器中被创建

ioc 控制反转 Inversion of Control

  • 对象的控制权在配置中

  • 正常三层伪代码:

<?php
class Logic
{
    /**
     * @var
     * @author Jiang Haiqiang
     * @email  jhq0113@163.com 
     */
    public $dataAccess;
    
    /**
     * Logic constructor.
     */
    public function __construct() 
    {
        //$this->dataAccess = new MysqlData();
        $this->dataAccess = new OracleData();
    }
    
    /**
    * @param $id
    * @author Jiang Haiqiang
    * @email  jhq0113@163.com
     */
    public function getInfo($id)
    {
        $this->dataAccess->getInfo($id);
    }
}
  • 不符合设计模式的开闭原则:对扩展开放,对修改进行关闭
<?php 
class Logic
{
    /**
     * @var
     * @author Jiang Haiqiang
     * @email  jhq0113@163.com 
     */
    public $dataAccess;
    
    /**
     * Logic constructor.
     */
    public function __construct() 
    {
        //$this->dataAccess = new MysqlData();
        $this->dataAccess = Factory::get('dataAccess');
    }
    
    /**
    * @param $id
    * @author Jiang Haiqiang
    * @email  jhq0113@163.com
     */
    public function getInfo($id)
    {
        $this->dataAccess->getInfo($id);
    }
}