<?php
/**
桥接模式
用户之间发送信息,站内信息、短信、email、手机....
*/
interface msg{
public function send($to, $content);
}
class zn implements msg {
public function send($to, $content){
echo "站内信", $to, "内容", $content;
}
}
class email implements msg {
public function send($to, $content){
echo "email", $to, "内容", $content;
}
}
class sms implements msg {
public function send($to, $content){
echo "sms", $to, "内容", $content;
}
}
//内容也细分了普通,加急,特急
//由于我们只能扩展,不能修改,所以再添加的类话就添加的太多了。一共9个
/*
class zncommon implements msg
class znwarm implements msg
class zndanger implements msg
......
*/
<====================================================================================================================>
<?php
//解决方案
//设计模式的目的就是解耦,但是不能完美。所以会有桥接模式。适当耦合!1
//如果按照上面的方式,需要创建 m*n 个类。下面只需要 m+n 个就行 。防止子类爆炸的情况
abstract class info {
protected $send = null;
public function __construct($send){
$this->send = $send;
}
abstract public function msg($content);
public function send($to, $content){
$content = $this->msg($content);
return $this->send->send($to, $content);
}
}
class commoninfo extends info {
public function msg($content) {
return $content.'<br />普通';
}
}
class warninfo extends info {
public function msg($content) {
return $content.'<br />紧急';
}
}
class dangerinfo extends info {
public function msg($content) {
return $content.'<br />特急';
}
}
class zn {
public function send($to, $content){
return "站内信给".$to."<br />内容是:".$content;
}
}
class email {
public function send($to, $content){
return "email".$to."<br />内容是:".$content;
}
}
class sms {
public function send($to, $content){
return "email".$to."<br />内容是:".$content;
}
}
//使用站内发普通信息
$commoninfo = new commoninfo(new zn());
echo $commoninfo->send('小东','水电费');
echo "<hr />";
//使用短信发特急信息
$dangerinfo = new dangerinfo(new sms());
echo $dangerinfo->send('上帝','保佑我,心想事成!');
桥接模式
最新推荐文章于 2023-03-26 16:11:28 发布