前幾篇介紹了設計模式的特性而且詳細講解了4種建立型模式,建立型模式是負責如何產生對象實例的,接下來說講結構型模式。設計模式
1、什麼是結構型模式?
結構型模式是解析類和對象的內部結構和外部組合,經過優化程序結構解決模塊之間的耦合問題。優化
2、結構型模式的種類:
適配器模式
橋接模式
裝飾模式
組合模式
外觀模式
享元模式
代理模式this
一、 適配器模式(Adapter)
將一個類的接口轉換成客戶但願的另外一個接口,適配器模式使得本來的因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。
應用場景:老代碼接口不適應新的接口需求,或者代碼不少很亂不便於繼續修改,或者使用第三方類庫。設計
代碼實現代理
//老的代碼 class User { private $name; function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } } //新代碼,開放平臺標準接口 interface UserInterface { function getUserName(); } class UserInfo implements UserInterface { protected $user; function __construct($user) { $this->user = $user; } public function getUserName() { return $this->user->getName(); } } $olduser = new User('張三'); echo $olduser->getName()."n"; $newuser = new UserInfo($olduser); echo $newuser->getUserName()."n"; 注意點:這裏的新接口使用了組合方式,UserInfo內部有一個成員變量保存老接口User對象,模塊之間是鬆耦合的,這種結構其實就是組合模式。不要使用繼承,雖然UserInfo繼承User也能達到一樣的目的,可是耦合度高,相互產生影響。
公開課:http://www.ucai.cn/train?f=17code