面向对象的洗礼:设计模式(十)之模板方法模式
模板方法模式,是最为常见,也是使用最为广泛的一种设计模式,很多程序猿都不知道,自己随便写的代码,也是一种设计模式。如果只能学习一种设计模式的话,那么就应该学习模板模式。顾名思义,模板模式,就是有一个固定的,现成的模板,往里面套东西呗。比如PPT,WORD,EXCEL等,Microsoft为我们提供了大量的模板。可以直接套用,也可以略做修改。总之,比我们自己全新做要省很多事儿。
模板方法模式,是最为常见,也是使用最为广泛的一种设计模式,很多程序猿都不知道,自己随便写的代码,也是一种设计模式。如果只能学习一种设计模式的话,那么就应该学习模板模式。
模板模式:在一个方法里定义算法的骨架,将一些步骤延迟到其子类。顾名思义,模板模式,就是有一个固定的,现成的模板,往里面套东西呗。比如PPT,WORD,EXCEL等,Microsoft为我们提供了大量的模板。可以直接套用,也可以略做修改。总之,比我们自己全新做要省很多事儿。
抽出多个类的共同特性,成为一个父类,父类根据需求封装好一个算法骨架,然后子类调用父类即可。
以PHP为代码环境,
[code]
<?php
class TestPaper{
public $name;
public $classes;
public function __construct($name, $classes){
$this->name = $name;
$this->classes = $classes;
}
public function display(){
echo '姓名:' . $this->name . ', 班级:' . $this->classes;
$this->separate();
}
public function title1($answer){
echo '题目一:******';
echo '答案:' . $this->answer($answer);
$this->separate();
}
public function title2($answer){
echo '题目二:******';
echo '答案:' . $this->answer($answer);
$this->separate();
}
public function answer($answer){
return $answer;
}
public function separate(){
echo '<br>';
}
}
class studentA extends TestPaper{
public function __construct($name, $classes){
parent::__construct($name, $classes);
}
public function answerTestPaper(){
$this->display();
$this->title1('C');
$this->title1('B');
}
}
class studentB extends TestPaper{
public function __construct($name, $classes){
parent::__construct($name, $classes);
}
public function answerTestPaper(){
$this->display();
$this->title1('A');
$this->title1('D');
}
}
$studentA = new studentA('小明', '一');
$studentA->answerTestPaper();
$studentB = new studentB('小红', '二');
$studentB->answerTestPaper();
?>
[/code]
点击:2381
点赞:11
点踩:11