一:构造注入:
<?php
class Main
{
public $name;
//构造注入
public function __construct($str)
{
$this->name = $str;
}
public function Method()
{
$this->name->Method();
}
}
class A
{
public function Method()
{
echo '我是A';
}
}
class B
{
public function Method()
{
echo '我是B';
}
}
$a=new Main(new A()); //注入A类
$a->Method();
Main类依赖A类,通过构造器传入参数,一旦A类参数发生修改,Main类不需要改动,只需修改调用的地方,因为A类的创建在外部,这样Main类就无需关心A类。
二:工厂模式
<?php
interface Getdata
{
public function Method();
}
class A implements Getdata
{
public function Method()
{
echo "我是A";
}
}
class B implements Getdata
{
public function Method()
{
echo "我是B";
}
}
class Factory
{
public static function bind($transport)
{
switch ($transport) {
case 'A':
return new A();
break;
case 'B':
return new B();
break;
}
}
}
$getdata = Factory::bind('A'); // 加载A类
$getdata -> Method();
进一步解耦出来,这里AB类参数需要改动,只需要改动Factory类,Main可以设置切换不同的类,这种模式很常见,比如缓存,自由切换memcache,redis,db等,都可以用这种模式切换。这种需要一一对应,各类的实例化在工厂中完成,各类的方法结构必须统一,如果需求增加,工厂也会变的更庞大。
本文探讨了PHP中依赖注入和工厂模式的应用。通过构造注入示例,展示了如何通过构造函数传递依赖,实现类间的解耦。同时,介绍了工厂模式,通过工厂类统一创建对象,进一步增强代码的灵活性和可维护性。
3024

被折叠的 条评论
为什么被折叠?



