PHP 设计模式之 工厂
1. 工厂模式
与简单工厂的区别是,将实现推迟到子类
可以不用抽象类,直接用一个接口来定义工厂方法,摒弃掉getMessage()方法,外部直接调用公开的模板方法(factoryMethod)即可
2. 实列
interface Message {
public function send(string $msg);
}
class AliYunMessage implements Message {
public function send(string $msg) {
return '阿里云短信内容:' . $msg;
}
}
class BaiduYunMessage implements Message {
public function send(string $msg) {
return '百度SMS短信内容:' . $msg;
}
}
abstract class MessageFactory {
abstract protected function factoryMethod();
public function getMessage() {
return $this->factoryMethod();
}
}
class AliFactory extends MessageFactory {
protected function factoryMethod(){
return new AliMessage();
}
}
class BaiduFactory extends MessageFactory {
protected function factoryMethod(){
return new BaiduMessage();
}
}
$factory = new BaiduFactory();
$message = $factory->getMessage();
echo $message->send('您有新的短消息,请查收');

浙公网安备 33010602011771号