当前位置: 首页 > news >正文

asp网站编辑教程网站开发前调查

asp网站编辑教程,网站开发前调查,新网站推广,友情链接举例依赖注入模式(Dependency Injection)由 学院君 创建于5年前, 最后更新于 10个月前版本号 #318333 views16 likes0 collects1、模式定义依赖注入(Dependency Injection)是控制反转(Inversion of Control)的一种实现方式。我们先来看看什么是控制反转。当调用者需要被调用者的协助…依赖注入模式(Dependency Injection)由 学院君 创建于5年前, 最后更新于 10个月前版本号 #318333 views16 likes0 collects1、模式定义依赖注入(Dependency Injection)是控制反转(Inversion of Control)的一种实现方式。我们先来看看什么是控制反转。当调用者需要被调用者的协助时在传统的程序设计过程中通常由调用者来创建被调用者的实例但在这里创建被调用者的工作不再由调用者来完成而是将被调用者的创建移到调用者的外部从而反转被调用者的创建消除了调用者对被调用者创建的控制因此称为控制反转。要实现控制反转通常的解决方案是将创建被调用者实例的工作交由 IoC 容器来完成然后在调用者中注入被调用者(通过构造器/方法注入实现)这样我们就实现了调用者与被调用者的解耦该过程被称为依赖注入。依赖注入不是目的它是一系列工具和手段最终的目的是帮助我们开发出松散耦合(loose coupled)、可维护、可测试的代码和程序。这条原则的做法是大家熟知的面向接口或者说是面向抽象编程。2、UML 类图3、示例代码在本例中我们在 Connection 类(调用者)的构造方法中依赖注入 Parameters 接口的实现类(被调用者)如果不使用依赖注入的话则必须在 Connection 中创建该接口的实现类实例这就形成紧耦合代码如果我们要切换成该接口的其它实现类则必须要修改代码这对到测试和扩展而言都是极为不利的。AbstractConfig.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** AbstractConfig类*/abstract class AbstractConfig{/*** var Storage of data*/protected $storage;public function __construct($storage){$this-storage $storage;}}Parameters.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** Parameters接口*/interface Parameters{/*** 获取参数** param string|int $key** return mixed*/public function get($key);/*** 设置参数** param string|int $key* param mixed $value*/public function set($key, $value);}ArrayConfig.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** ArrayConfig类** 使用数组作为数据源*/class ArrayConfig extends AbstractConfig implements Parameters{/*** 获取参数** param string|int $key* param null $default* return mixed*/public function get($key, $default null){if (isset($this-storage[$key])) {return $this-storage[$key];}return $default;}/*** 设置参数** param string|int $key* param mixed $value*/public function set($key, $value){$this-storage[$key] $value;}}Connection.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** Connection类*/class Connection{/*** var Configuration*/protected $configuration;/*** var Currently connected host*/protected $host;/*** param Parameters $config*/public function __construct(Parameters $config){$this-configuration $config;}/*** connection using the injected config*/public function connect(){$host $this-configuration-get(host);// connection to host, authentication etc...//if connected$this-host $host;}/** 获取当前连接的主机** return string*/public function getHost(){return $this-host;}}4、测试代码Tests/DependencyInjectionTest.phpnamespace DesignPatterns\Structural\DependencyInjection\Tests;use DesignPatterns\Structural\DependencyInjection\ArrayConfig;use DesignPatterns\Structural\DependencyInjection\Connection;class DependencyInjectionTest extends \PHPUnit_Framework_TestCase{protected $config;protected $source;public function setUp(){$this-source include config.php;$this-config new ArrayConfig($this-source);}public function testDependencyInjection(){$connection new Connection($this-config);$connection-connect();$this-assertEquals($this-source[host], $connection-getHost());}}Tests/config.phpreturn array(host github.com);5、总结依赖注入模式需要在调用者外部完成容器创建以及容器中接口与实现类的运行时绑定工作在 Laravel 中该容器就是服务容器而接口与实现类的运行时绑定则在服务提供者中完成。此外除了在调用者的构造函数中进行依赖注入外还可以通过在调用者的方法中进行依赖注入。
http://www.yutouwan.com/news/74306/

相关文章:

  • 网站建设主要包括哪些建设网站赚钱么
  • 一流的天津网站建设wordpress转义
  • 国外网站的建设全国建设工程四库一平台
  • 做百度推广需要有自己的网站吗购物网站有哪些
  • 提卡网站建设制作网页需要什么技术
  • 网站建设购买数据库的流程图企业工商信息公示系统
  • 裁剪图网站个人手机网站大全
  • 私人做网站收费企业网站托管价格
  • 郧阳网站建设wordpress 路由器
  • 网站公司倒闭网络网页设计制作公司
  • 成都网站建设 常凡云免费虚拟主机网站源码
  • 找做网站公司教程推广优化网站排名
  • 怎么做网站dns加速图文识别微信小程序是什么
  • 微信版网站制作邯郸网站设计培训机构
  • 不会代码怎么做外贸网站潍坊建设部门管理网站
  • 向google提交网站郑州网站建设hndream
  • 做互联网产品和运营必备的网站电商小程序开发需要多少钱
  • 手机网站做分享到微信小微企业管理软件
  • 曲阜建设公司网站做毕业设计的网站
  • 网站侧边栏设计淘宝网官网首页
  • 中国做的比较好的电商网站有哪些自己服务器做网站服务器备案
  • 做网站怎么添加关键词wordpress 标签拼音
  • 网站logo是指北京ui及网页设计
  • 深圳高端网站建设价格wordpress文章描述
  • 做电影网站有风险吗手机网站开发下载
  • 上海网站制作团队平台型网站制作
  • 如何为网站建设内容微网站建设对微网站进行策划
  • 义乌建设网站制作网站建设公司 广告法被处罚
  • app开发科技网站建设wordpress绑定两个域名
  • 政务网站优化wordpress 本地运行慢