zoukankan      html  css  js  c++  java
  • php 简单说明IoC (php 实例+注释)

    简单说明IoC

    <?php
    
    //Ioc ————  设计方式
    //控制反转 Inversion of Control
    //依赖关系的转移
    //依赖抽象而非实践
    
    //用于解决高层应用依赖 底层组件,软件移植性差(修改困难)的问题
    //实例:
    /*
    class soft{
        private $writer;
        
        public function __construct(){
            $this->writer = new FloppyWriter;
        }
        public function save(){
            $this->writer->SaveToFloppy();
        }
    }
    //造成高层对底层的依赖__使程序无法重用 不好的设计
    class FloppyWriter{
        public function saveToFloppy(){
            echo __METHOD__;
        }
    }
    
    $soft = new soft;
    $soft->save()
    */
    ##########################改进##########################
    //定义一个接口约定
    interface IDeviceWriter
    {
        public function saveToDevice();
    }
    class soft{
        private $_writer;
        
        public function setWriter($name){
            $this->_writer = $name;
        }
        public function save(){
            $this->_writer->saveToDevice();
        }
    }
    //软盘储存
    class FoppyWriter implements IDeviceWriter{
        public function saveToDevice(){
            echo __METHOD__;
        }
    }
    //USB储存
    class USBWriter implements IDeviceWriter{
        public function saveToDevice(){
            echo __METHOD__;
        }
    }
    //将高层依赖 转移到 "依赖注入"
    $soft= new soft();
    $writer=  new USBWriter;
    $soft->setWriter($writer);
    $soft->save();
  • 相关阅读:
    Collatz Conjecture(BAPC2017)
    P3377 【模板】左偏树(可并堆)
    Mergeable Stack
    B. Our Tanya is Crying Out Loud(cf)and 5918: 改变(中石油)
    bzoj 4488: [Jsoi2015]最大公约数
    Zoj
    牛客练习赛43 回顾
    哈尔滨工程大学ACM预热赛 补题
    April Fools Day Contest 2019: editorial回顾补题
    第一周总结
  • 原文地址:https://www.cnblogs.com/zjhblogs/p/5599991.html
Copyright © 2011-2022 走看看