实例
场景:短信发送功能模块。现在我们使用了三个商家的,分别是阿里云、百度SMS、极光的短信服务,在不同业务中可能使用不同的短信发送商,使用简单工厂可以方便的完成这个需求。
类图:
代码:
<?phpinterface 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;}
}class JiguangMessage implements Message{public function send(string $msg){// 调用接口,发送短信return '极光短信发送成功!短信内容:' . $msg;}
}class MessageFactory {public static function createMessage($type){switch($type){case 'Ali':return new AliYunMessage();case 'BD':return new BaiduYunMessage();case 'JG':return new JiguangMessage();default:return null;}}
}// 当前业务需要使用极光
$message = MessageFactory::createMessage('JG');
echo $message->send('您有新的短消息,请查收');?>