一道面试题,观察者模式

Posted polax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道面试题,观察者模式相关的知识,希望对你有一定的参考价值。

<?php

interface Strategy
{
  public function send_code($code);
}

class messageStrategy implements Strategy
{
  public function send_code($code)
  {
    return "短信已发送";
  }
}

class emailStrategy implements Strategy
{
  public function send_code($code)
  {
    return "邮件已发送";
  }
}

class weixinStrategy implements Strategy
{
  public function send_code($code)
  {
    return "微信已发送";
  }
}


class sendCode
{
  private $strategyInstance;
  public function __construct ($instance)
  {
    $this->strategyInstance = $instance;
  }
 
  public function send($code)
  {
    return $this->strategyInstance->send_code($code);
  }
}


$type = $_GET(‘type‘);

if($type==‘weixin‘){
    $instance = new weixinStrategy();
}elseif($type==‘message‘){
    $instance = new messageStrategy();
}elseif ($type==‘email‘) {
    $instance = new emailStrategy();
}



$class = new sendCode($instance);
$code =  rand(10000,99999);
$class->send($code);


?>




1 使用场景说明
用户注册/登录/忘记密码三种情况下,需要发送验证码

2 接口说明
   后台系统实现推送验证码功能,支持短信/邮件/微信模版消息。

3  请求参数
type:发送的类型 weixin 或 message 或 email

 

以上是关于一道面试题,观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

一道经典面试题:字符串在Java中如何通过“引用”传递

每天一道面试题Redis单例模式主从模式sentinel模式和集群模式优缺点?

javascript 面向对象-面试题实例

JavaScript手撕前端面试题:寄生组合式继承 | 发布订阅模式 | 观察者模式

一道面试题:静态代码块的执行顺序

前端面试100问(22-30)