定义
模板模式(Template Pattern)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。属性行为型模式。
代码示例
商城中一个商品会存在多个规格,而详情页的整体结构通常不会变化,只是商品图片的规格部分会根据选择的不同而改变。抽象商城详情页模板,把模板中不变的内容作为公共部分,规格部分作为子类必须实现的方法。
<?php
abstract class ProductView
{
abstract public function color();
abstract public function size();
public function detail()
{
echo '商品详情页,颜色:' . $this->color() . ',尺寸:' . $this->size() . '<br>';
}
}
class ProductA extends ProductView
{
public function color()
{
return '白色';
}
public function size()
{
return 'XL';
}
}
class ProductB extends ProductView
{
public function color()
{
return '黑色';
}
public function size()
{
return 'M';
}
}
class DemoPattern
{
public function handle()
{
$productA = new ProductA();
$productA->detail();
$productB = new ProductB();
$productB->detail();
}
}
$demoPattern = new DemoPattern();
$demoPattern->handle();
总结
模板模式通过把不变的行为放到抽象类中,以此去除子类中的重复方法。
网友评论