PHP设计模式六大原则之依赖替换原则
2021-08-10文远技术博客537207
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、代码更稳定
相关文章
文章评论
看完文章了吗?谁便说点吧
发表
暂无评论