程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計模式系列 - 適配器

PHP設計模式系列 - 適配器

編輯:關於PHP編程

什麼是適配器:
適配器設計模式只是將某個對象的接口適配為另一個對象所期望的接口。
 
設計情景:
假如我們原始的有一個UserInfo的類,提供用戶信息的類,早起設計該類的時候,只實現了一個getUserName獲取用戶名的方法。
我們的MyOldObject類中,將從UserInfo這個類中獲取用戶信息,並且輸出用戶名
隨著時間的推移,我們舊的UserInfo這個類只提供的獲取用戶名的方法,已經沒法滿足需求,我們同時需要獲取用戶的年齡等信息。
為了不改變原本UserInfo這個類,我們就繼承UserInfo,建立一個UserInfoAdapter類,實現getAge獲取年齡這樣的方法。
在我們的MyNewObject新的類中,我們實例化UserInfoAdapter,打印出用戶姓名和年齡。
這樣,隨著我們的擴展,我們沒有改變原先UserInfo這個類和使用這個類的接口,我們通過適配的方法,將UserInfo類擴展出來
代碼:UserInfo類,實現getUserName方法
[php] 
<?php  
//早期的一個用戶類,只實現獲取用戶名的方法 
class UserInfo { 
 
    public function getUserName() { 
        return 'initphp'; 
    } 

代碼:MyOldObject類,從UserInfo類中獲取信息,輸出用戶名
[php] 
<?php 
include_once("UserInfo.php"); 
class MyOldObject { 
    public function write() { 
        $UserInfo = new UserInfo; 
        echo $UserInfo->getUserName(); 
    } 

$a = new MyOldObject; 
$a->write(); 
代碼:UserInfoAdapter類,隨著時間推移,項目需求在變化,UserInfo類無法滿足需求,我們做了UserInfo類的適配器,滿足新功能的需求
[php] 
<?php  
include_once("UserInfo.php");  
class UserInfoAdapter extends UserInfo{ 
 
    public function getUserAge() { 
        return 28; 
    } 
     
    public function getUser() {  
        return array( 
            'username' => $this->getUserName(), 
            'age' => $this->getUserAge() 
        ); 
    } 

代碼:MyNewObject類,新功能的類,需要打印出用戶年齡和姓名,UserInfo類無法滿足需求,需要調用UserInfoAdapter適配器這個類
[php] 
<?php 
include_once("UserInfoAdapter.php"); 
class MyNewObject {  
    public function write() { 
        $UserInfoAdapter = new UserInfoAdapter; 
        print_r($UserInfoAdapter->getUser());  
    } 

$a = new MyNewObject; 
$a->write(); 
 作者:initphp

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved