解耦---控制反转、依赖注入(服务容器)

2018-12-21 hubo php开发

耦合性高的代码不好维护,为了解耦,诞生了许多设计思想。

控制反转是其中一种设计思想;

依赖注入(服务容器方式)是其思想的一种实现。


(一)创建一个操作数据库、文件系统的代码最初开始这样写:

2.png


缺点:耦合性高,在共有函数中实例化对象,一旦以后DB类和文件系统类涉及参数一些变化,修改会有大的工作量。


(二)更改代码:

3.png

19.png


把DB类和文件类的构造移到了客户端,一旦涉及修改,工作量大大降低,但是新问题来了:为了创建一个Writer类,我们需要先创建好DB类,FileSystem类等,这对负责涉及Writer类的人来说,要求是很高的,他需要看很多其他类文档,一个个创建(可能还需要初始化),然后才能创建出他要的writer变量。
所以,能不能有一种更好的写法,使得写Writer类的人,用一种更加快捷的接口,就能创建和调用他要的类,甚至连参数都不用填。


(三)更改代码:服务容器

创建一个容器:


6.png


绑定服务:

9.png




容器依赖:

19.png


针对使用者来说,只使用这一句$writer=new Writer($db); 就可以调用服务,而不用new一堆对象,简化操作,实现封装。

网站备案号:京ICP备11043289号-1 北京市公安局网络备案 海1101084571
版权所有 北京育灵童科技发展有限公司 Copyright © 2002-2024 www.elight.cn, All Rights Reserved