PHP设计模式六大原则之里氏替换原则
2021-08-10文远技术博客991304
1、什么是里氏替换
当需要子类增加功能的时候,对父类做到只扩展新功能,不修父类改原本功能的原则
2、代码示例
//使用抽象类定义抽象方法和公用方法
abstract class SetStr
{
//继承本类的所有类的Str方法各自实现
public abstract function Str();
/*
* 继承本类的所有类都可以使用rand_str类
*/
public function rand_str()
{
$arr = ['!','#','$','%','^','&','*','(',')','_','-','+','='];
$indexs = array_rand($arr,4);
$str = $this->Str();
foreach ($indexs as $index){
$str .= $arr[$index];
}
return $str;
}
}
class Num extends SetStr
{
public function Str()
{
return rand(0,10000);
}
}
class English extends SetStr
{
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 client
{
public function run()
{
$SetStr = new Num();
$rand_str = new English();
echo "4位随机数字字符串:",$SetStr->Str().PHP_EOL;
echo "4为随机英文字符串:",$rand_str->Str(),PHP_EOL;
echo "随机数字与特殊字符串:".$SetStr->rand_str(),PHP_EOL;
echo "随机英文与特殊字符串:".$rand_str->rand_str();
}
}
$client = new client();
$client->run();
3、优点
1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性
2、提高代码的复用性
3、子类可以形似父类,但是又异于父类
4、提高代码的可扩展性,实现父类的方法就可以了
5、提高产品或者项目的开放性
相关文章
文章评论
看完文章了吗?谁便说点吧
发表
暂无评论