桥接模式

<?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('上帝','保佑我,心想事成!');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值