桥接模式:将两个本来不相关的类结合在一块儿,而后利用两个类中的方法和属性,输出一份新的结果。设计模式
abstract class Staff { abstract public function staffData(); } class CommonStaff extends Staff { public function staffData() { return "小名,小红,小黑"; } } class VipStaff extends Staff { public function staffData() { return '小星、小龙'; } }
// 抽象父类 abstract class SendType { abstract public function send($to, $content); } class QQSend extends SendType { public function __construct() { // 与QQ接口链接方式 } public function send($to, $content) { return $content. '(To '. $to . ' From QQ)<br>'; } }
class SendInfo { protected $_level; protected $_method; public function __construct($level, $method) { // 这里可使用单例控制资源的消耗 $this->_level = $level; $this->_method = $method; } public function sending($content) { $staffArr = $this->_level->staffData(); $result = $this->_method->send($staffArr, $content); echo $result; } }
$info = new SendInfo(new VipStaff(), new QQSend()); $info->sending( '回家吃饭'); $info = new SendInfo(new CommonStaff(), new QQSend()); $info->sending( '继续上班');
回家吃饭(To 小星、小龙 From QQ) 继续上班(To 小名,小红,小黑 From QQ)
从上面能够看出,若是增长分组或者是发送信息的类型,均可以直接建立一个类,来拓展,十分方便。 可是Bridge模式虽然是一个很是有用的模式,也很是复杂,它很好的符合了开放-封闭原则和优先使用对象,而不是继承这两个面向对象原则。