您现在的位置是:首页 > 技术博客 > PHP设计模式六大原则之依赖替换原则

PHP设计模式六大原则之依赖替换原则

2021-08-10文远技术博客537207

PHP

1、什么是依赖替换原则

高层模块不应该依赖底层模块,二者都应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象


2、解决什么问题

类A直接依赖类B,假如要将类A改为依赖类C,则必须要通过修改类A的代码才可以实现。这种场景下,类A一般是高层模块,负责复杂的业务逻辑。类B和类C是低层模块,负责基本的原子操作。假如修改类A,会给程序带来不必要的风险。


3、代码示例

interface I
{
   public function str();
}

class B implements I
{
   public function str()
   {
       return rand(0,10000);
   }
}

class C implements I
{
   public function str()
   {
       $arr = ['a','b','c','d','e','f','g'];
       $indexs = array_rand($arr,4);
       $str = '';
       foreach ($indexs as $index){
           $str .= $arr[$index];
       }
       return $str;
   }
}

class D implements I
{
   public function str()
   {
       return "1111";
   }
}

class A
{
   public function boot(I $I)
   {
       echo "开始生成字符串,预计时间3秒...".PHP_EOL;
       for($i=3;$i>=0;$i--){
           sleep(1);
           echo $i."秒".PHP_EOL;
       }
       echo "生成字符串结束,你的字符串为:",$I->str().PHP_EOL;
   }
}

class client
{
   public function run()
   {
       $set = new A();
       //想实现不同类的功能,只需要把类当成参数传给boot方法就可以实现
       $set->boot(new B());
       $set->boot(new C());
       $set->boot(new D());
   }
}

$client = new client();
$client->run();

用接口和抽象类实现的方法是一样的,效果也是一样的


4、优点

1、代码复用性强
2、代码更稳定

文章评论

看完文章了吗?谁便说点吧

发表 captcha

暂无评论