模板方法模式
将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。
Demo
<?php
/**
* Created by PhpStorm->
//抽象模板类
abstract class MakePhone
{
protected $name;
public function __construct($name)
{
$this->name=$name;
}
public function MakeFlow()
{
$this->MakeBattery();
$this->MakeCamera();
$this->MakeScreen();
echo $this->name."手机生产完毕!<hr/>";
}
public abstract function MakeScreen();
public abstract function MakeBattery();
public abstract function MakeCamera();
}
//小米手机
class XiaoMi extends MakePhone
{
public function __construct($name='小米')
{
parent::__construct($name);
}
public function MakeBattery()
{
echo "小米电池生产完毕!<br/>";
}
public function MakeCamera()
{
echo "小米相机生产完毕!<br/>";
}
public function MakeScreen()
{
echo "小米屏幕生产完毕!<br/>";
}
}
//魅族手机
class FlyMe extends MakePhone
{
function __construct($name='魅族')
{
parent::__construct($name);
}
public function MakeBattery()
{
echo "魅族电池生产完毕!<br/>";
}
public function MakeCamera()
{
echo "魅族相机生产完毕!<br/>";
}
public function MakeScreen()
{
echo "魅族屏幕生产完毕!<br/>";
}
}
$miui=new XiaoMi();
$flyMe=new FlyMe();
$miui->MakeFlow();
$flyMe->MakeFlow();
请关注我的订阅号

本文深入探讨了模板方法模式,一种行为型设计模式,通过定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
1796

被折叠的 条评论
为什么被折叠?



