橋接模式:將兩個本來不相關的類結合在一塊兒,而後利用兩個類中的方法和屬性,輸出一份新的結果。設計模式
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模式雖然是一個很是有用的模式,也很是複雜,它很好的符合了開放-封閉原則和優先使用對象,而不是繼承這兩個面向對象原則。