快速入門:PHP適配器模式簡述_PHP教程

來源:互聯網
上載者:User
PHP有很多值得學習的地方,這裡我們主要介紹PHP適配器模式,介面的改變,是一個需要程式員們必須(雖然很不情願)接受和處理的普遍問題。程式提供者們修改他們的代碼;系統庫被修正;各種程式語言以及相關庫的發展和進化。我孩子的無數玩具中有一個簡要地描述了這個兩難局面:你無法合理安排一個不得其所的人。

問題

你如何避免因外部庫的API改變而帶來的不便?假如你寫了一個庫,你能否提供一種方法允許你軟體的現有使用者進行完美地升級,即使你已經改變了你的API?為了更好地適宜於你的需要,你應該如何改變一個對象的介面?

解決方案

PHP適配器模式為對象提供了一種完全不同的介面。你可以運用適配器(Adapter)來實現一個不同的類的常見介面,同時避免了因升級和拆解客戶代碼所引起的糾紛。考慮一下當(不是假設!)一個第三方庫的API改變將會發生什麼。過去你只能是咬緊牙關修改所有的客戶代碼,而情況往往還不那麼簡單。你可能正從事一項新的項目,它要用到新版本的庫所帶來的特性,但你已經擁有許多舊的應用程式,並且它們與以前舊版本的庫互動運行地很好。你將無法證明這些新特性的利用價值,如果這次升級意味著將要涉及到其它應用程式的客戶代碼。

註:控制體模式

PHP適配器模式是控制體模式的最新範例。一個適配器(Adapter)的結構類似於Proxy 伺服器(Proxy)和修飾器(Decorator),而它們的不同之處在於,適配器(Adapter)的目的是改變封裝類的介面,Proxy 伺服器(Proxy)和修飾器(Decorator)則是保持介面不變。

樣本代碼

讓我們看看當API改變時,如何保護應用程式不受影響。假設你費盡心思尋找合適的庫,最後終於找到了HwLib,一個(假設的)被設計用來發送資訊的代碼集。以下為引用的內容:

 
  1. // PHP4
  2. /**
  3. * the HwLib helps programmers everywhere write their first program
  4. * @package HelloWorld
  5. * @version 1
  6. */
  7. class HwLib {
  8. /**
  9. * Say “Hello”
  10. * @deprec this function is going away in the future
  11. * @return string
  12. */
  13. function hello() {
  14. return ‘Hello ‘;
  15. }
  16. /**
  17. * target audience
  18. * @return string
  19. */
  20. function world() {
  21. return ‘World!’;
  22. }
  23. }

下面是庫啟動並執行範例:

 
  1. $hw =& new HwLib;
  2. echo $hw->hello(), $hw->world();

HwLib有完備的說明文檔。在文檔中作者已經明確指出hello()方法會在未來的版本中不被支援(甚至淘汰)。接下來,現在假設第二版的HwLib已經發布。一個全新的greet()方法代替了hello()。下面是這個庫的新版本(注釋已被抽取掉):

 
  1. // version 2
  2. class HwLib {
  3. function greet() {
  4. return ‘Greetings and Salutations ‘;
  5. }
  6. function world() {
  7. return ‘World!’;
  8. }

http://www.bkjia.com/PHPjc/446448.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446448.htmlTechArticlePHP有很多值得學習的地方,這裡我們主要介紹PHP適配器模式,介面的改變,是一個需要程式員們必須(雖然很不情願)接受和處理的普遍問...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.