簡介:
配接器模式屬于結構型設計模式,
將一個類的介面轉換成可應用的兼容介面,配接器使原本由于介面不兼容而不能一起作業的那些類可以一起作業,
配接器模式有兩種實作方案,一種是繼承的方式,一種是組合的方式,
適用場景:
- 兼容不方便更改的“祖傳”代碼,
歸納具有相似點的模塊,比如Laravel FileSystemAdapter,
優點:
- 擴展了原有類,增強了擴展性,
- 無需修改原有代碼,符合開閉原則,
缺點:
由于PHP不支持多繼承,一次最多只能適配一個適配者類,
代碼:
//用戶類,獲取用戶資訊,這是個老專案
class User {
public function getUserInfo() {
return serialize([
'id' => 1,
'name' => 'zs',
'phone' => '18888888888',
'email' => '[email protected]'
]);
}
}
//老呼叫埠,由于這種序列化語法是PHP特有的,但是一旦擴展呼叫端的種類,比如添加java,安卓呼叫,其它呼叫端的介面將無法使用,為此需要做出優化,
$user = new User();
echo $user->getUserInfo() . PHP_EOL;
//優化 使用繼承的方式
class UserAdapter1 extends User {
public function getUserInfo() {
$old_user_info = parent::getUserInfo();
return json_encode(unserialize($old_user_info));
}
}
//呼叫端
$user_new = new UserAdapter1();
echo $user_new->getUserInfo() . PHP_EOL;
//優化 使用組合的方式
class UserAdapter2 {
public function getUserInfo() {
$old_user_info = (new User)->getUserInfo();
return json_encode(unserialize($old_user_info));
}
}
//呼叫端
$user_new = new UserAdapter2();
echo $user_new->getUserInfo() . PHP_EOL;
```php
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/526795.html
標籤:PHP
