模板方法模式
定义一个操作中算法的骨架,而将一些步骤延迟到子类中,从而实现通过不同子类来对具体实现操作实现重定义。
假设现在有一份调查问卷,分给甲乙两个同学来做。
先看看我们的问卷类
abstract class questionnaire{
public function question1(){
echo "你的性别是".$this->answer1()."<br>";
}
public function question2(){
echo "你的工作是".$this->answer2()."<br>";
}
abstract function answer1();
abstract function answer2();
}
class jia extends questionnaire{
function answer1(){
echo "男";
}
function answer2(){
echo "厨师";
}
}
class yi extends questionnaire{
function answer1(){
echo "女";
}
function answer2(){
echo "老师";
}
}
$obj=new jia();
$obj->question1();
$obj->question2();
在这里我们把问卷共同的部分(问题)都提取到了父类中,而把变化的部分(答案)交由子类实现,减少了代码的重复。当我们在完成一些过程或一系列步骤时,如果只要个别步骤或者操作不同,可以考虑使用模板方法模式来减少重复代码。
网友评论