1、什么是適配器模式?
? ? ? 適配器設計模式只是將某個對象的接口適配為另外一個對象所期望的接口
2、實例講解
~~~
<?php
/*
* 適配器設計模式
* --------------
* @author liuxinming
*/
/*早先設計的一個類*/
class UserInfo{
/**
* 根據用戶UID獲取用戶信息
* @param inti $uid 用戶ID
* @return array $userinfo 返回用戶信息
*/
public function getUserInfo($uid){
//相關處理
//DB層,從數據庫查詢用戶信息
$userinfo=array(
'uid'=>1,
'username'=>'liuxinming',
);
return $userinfo;
}
}
/**
* 適配器類,目的是在新需求增加的情況 不修改以前公共接口類,通過對適配器UserInfoIntegral用戶積分類的擴展來滿足新需求
*/
class UserInfoIntegral extends UserInfo{
public function getUserIntegral($uid){
$integral=array(
'integral1'=>2,
'integral2'=>3,
);
return $integral;
}
public function getUser($uid){
$userall=array(
'userinfo'=>$this->getUserInfo($uid),
'userintegral'=>$this->getUserIntegral($uid),
);
return $userall;
}
}
/**
* 獲取用戶信息客戶端類
*/
class MyObject{
public function write($uid){
$UserInfoApp= new UserInfoIntegral();
return $UserInfoApp->getUser($uid);
}
}
$l=new MyObject();
print_r($l->write(1));
?>
~~~
運行后輸出如下:
~~~
Array (?
? ? ?[userinfo] => Array (
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [uid] => 1?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [username] => liuxinming
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? )?
? ? [userintegral] => Array (
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [integral1] => 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [integral2] => 3?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)?
? ? ? ? ? ? ?)
~~~
- 前言
- PHP生成對象之設計模式—單例模式
- PHP生成對象之設計模式—工廠方法模式
- PHP之設計模式—適配器模式
- PHP之設計模式—建造者模式(通過選擇mysql,mongo數據庫鏈接類型做說明)
- PHP之設計模式—委托模式
- PHP面向對象學習一:對象基礎實踐
- PHP面向對象學習之二:深入了解面向對象高級特性
- PHP面向對象學習之三:抽象類和接口類的實際作用
- PHP解決問題進化論(整理筆記)
- PHP7新特性整理介紹篇
- php-fpm 與 Nginx優化總結
- Centos+Nginx+PHP7.0編譯安裝(和PHP5.6老版本共存)
- PHP7:Mongodb API使用
- PHP之include/require深入了解
- PHP內核了解:生命周期及運行模式