<?php
/**
*
* 桥接模式:
* 如 论坛给用户发送站内信 手机 sms信息 ,信息的程度分为普通 加急 紧急 三种不同的程度;
*
*/
#第一种情况 不考虑使用桥接模式的情况下,普通模式,我们会这么写;
/*
interface Msg
{
function send($name,$content);
}
class ZnMsg implements Msg
{
function send($name,$content)
{
echo $name.'发送了站内信息内容是:'.$content;
}
}
class SmsMsg implements Msg
{
function send($name,$content)
{
echo $name.'发送了sms信息内容是:'.$content;
}
}
class PhoneMsg implements Msg
{
function send($name,$content)
{
echo $name.'发送了手机信息内容是:'.$content;
}
}
#然后因为信息的程度分为普通 加急 紧急 三种不同的程度,所以这样;
class CommonZnMsg extends ZnMsg
{
public function doSend($name,$content)
{
echo '普通'.$this->send($name,$content);
}
}
class WarnZnMsg extends ZnMsg
{
public function doSend($name,$content)
{
echo '加急'.$this->send($name,$content);
}
}
class DangerZnMsg extends ZnMsg
{
public function doSend($name,$content)
{
echo '紧急'.$this->send($name,$content);
}
}
*/
//$methods = get_class_methods('CommonZnMsg');
//$propertities = get_class_vars('CommonZnMsg');
//var_dump($propertities);
//对于以上这种设计模式,明显是不合理的,3*3 相当于有9种情况;如果再多一种情况,那明显就27种情况了;所以下面我们使用
//桥接模式,很明显可以改善这种情况;
#第二种情况,使用桥接模式;
interface Msg
{
function send($name,$content);
}
class ZnMsg implements Msg
{
function send($name,$content)
{
echo $name.'发送了站内信息内容是:'.$content;
}
}
class SmsMsg implements Msg
{
function send($name,$content)
{
echo $name.'发送了sms信息内容是:'.$content;
}
}
class PhoneMsg implements Msg
{
function send($name,$content)
{
echo $name.'发送了手机信息内容是:'.$content;
}
}
abstract class Info
{
protected $send = null;
public function __construct(Msg $msg)
{
$this->send = $msg;
}
abstract function msg($content);
public function sendMsg($name,$content)
{
$content = $this->msg($content);
$this->send->send($name,$content);
}
}
class CommonInfo extends Info
{
public function msg($content = '')
{
return '普通'.$content;
}
}
class WarnInfo extends Info
{
public function msg($content = '')
{
return '加急'.$content;
}
}
class DangerInfo extends Info
{
public function msg($content = '')
{
return '紧急'.$content;
}
}
$zn = new DangerInfo(new ZnMsg());
$zn->sendMsg('小猪','要好好努力啊!');
$zn = new CommonInfo(new ZnMsg());
$zn->sendMsg('小猪','要好好努力啊!');
PHP设计模式之桥接模式
最新推荐文章于 2023-03-26 16:11:28 发布