<?php
/**
* 抽象模板模式
* 继承复用
*/
abstract class Template{
public function isOk($name,$password){
return true;
}
public abstract function handle($name);
public abstract function error($name);
public function login($name,$password){
if($this->isOk($name,$password)){
$this->handle($name);
}else{
$this->error($name);
}
}
}
class Web extends Template
{
public function handle($name)
{
echo $name.'web 端成功登陆'.'<br/>';
}
public function error($name){
echo $name.'web 登录失败'.'<br/>';
}
public function isOk($name,$password){
if($name == '流年'){
return true;
}
}
}
class Phone extends Template{
public function handle($name){
echo $name.'移动端登录成功'.'<br/>';
}
public function error($name){
echo $name.'移动端登录失败'.'<br/>';
}
public function isOk($name,$password){
if($name == 'MissYou'){
return true;
}
}
}
/**
* 模板模式优点
* 1.提取公共部分,分离可能变动的部分,提高复用
* 2.由父类控制逻辑执行顺序,子类可以只负责实现
* 3.子类可以通过覆盖钩子方法来实现反向控制
*/
/**
* 模板方式的主要缺点
* 变动部分很多时,会造成子类过多,还不如使用组合模式
*/
$web = new Web();
$phone = new Phone();
$web->login('流年',123456);
$web->login('MissYou',123456);
$phone->login('MissYou',123456);
$phone->login('流年',123456);
模板模式
最新推荐文章于 2024-05-21 00:15:00 发布