天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP 工廠模式使用方法

基本的工廠類
復制代碼 代碼如下:
class MyObject{
//對象將從工廠返回
}
class MyFactory{
public static function factory(){
return new MyObject():
}
}
$instance=MyFactory::factory();

使用工廠類解析圖像文件
復制代碼 代碼如下:
<?php
interface IImage{
function getHeight();
function getWidth();
function getData();
}
class Image_PNG implements IImage{
private $_width,$_height,$_data;
public function __construct($file){
$this->_file=$file;
$this->_parse();
}
private function _parse(){
//完成PNG格式的解析工作
//并填充$_width,$_height,$_data;
}
public function getWidth(){
return $this->_width;
}
public function getHeight(){
return $this->_height;
}
public function getData(){
return $this->_data;
}
}
class Image_JPEG implements IImage{
private $_width,$_height,$_data;
public function __construct($file){
$this->_file=$file;
$this->_parse();
}
private function _parse(){
//完成JPEG格式的解析工作
//并填充$_width,$_height,$_data;
}
public function getWidth(){
return $this->_width;
}
public function getHeight(){
return $this->_height;
}
public function getData(){
return $this->_data;
}
}
class ImageFactory{
public static function factory($file){
$pathParts=pathinfo($file);
switch (strtolower($pathParts['extension']))
{
case 'jpg':
$ret=new Image_JPEG($file);
break;
case 'png':
$ret=new Image_PNG($file);
break;
default:
//有問題
}
if($ret instanceof IImage){
return $ret;
}else {
//有問題
}
}
}
//當使用圖像文件名調用 工廠方法時,根據傳入的文件類型不同,取得不同對象。
//調用ImageFactoyr
$image=ImageFactory::factory('/path/to/my.jpg');
//$image是Image_JPEG類的一個實例
echo $image->getWidth();

使用工廠類解決數據庫可移值性問題
在數據庫應用程序中,工廠模式可以在以下兩個方面起作用。
.使軟件更容易支持各種不同的數據庫平臺,用于擴展用戶群
.如果軟件是內部使用,需要修改數據庫時,可以容易將應用程序移值到別一個平臺
在代碼中,創建了一個名為User的數據庫表來測試它,這個表定義一個名為email的varchar類型字段
復制代碼 代碼如下:
<?php
interface IDatabaseBindings{
public function userExists($email);
}
class PGSQL implements IDatabaseBindings{
protected $_connection;
public function __construct(){
$this->_connection=pg_connect('dbname=example_db');
}
public function userExists($email){
$emailEscaped=pg_escape_string($email);
$query="select 1 from users where email='".$emailEscaped."'";
if($result=pg_query($query,$this->_connection)){
return (pg_num_rows($result)>0)?true:false;
}else{
return false;
}
}
}
class MYSQL implements IDatabaseBindings{
protected $_connection;
public function __construct(){
$this->_connection=mysql_connect('localhost');
mysql_select_db('example_db',$this->_connection);
}
public function userExists($email){
$emailEscaped=mysql_real_escape_string($email);
$query="select 1 from users where email='".$emailEscaped."'";
if($result=mysql_query($query,$this->_connection)){
return (mysql_num_rows($result)>0)?true:false;
}else{
return false;
}
}
}
class DatabaseFactory{
public static function factory(){
$type=loadtypefromconfigfile();
switch ($type){
case 'PGSQL':
return new PGSQL();
break;
case 'MYSQL':
return new MYSQL();
break;
}
}
}

應用程序不必知道它與何種類型的數據庫連接,只會基于IDatabaseBindings接口定義的規則直接與工廠返回的實例打交道。
復制代碼 代碼如下:
//調用DatabaseFactoy
$db=DatabaseFactory::factory();
$db->userExists('[email protected]');

php技術PHP 工廠模式使用方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜性色一区二区三区不卡视频 | 午夜一级免费视频 | 入禽太深免费高清在线观看5 | AV久久久囯产果冻传媒 | 二级毛片免费观看全程 | a级男女性高爱潮高清试看 A级毛片无码久久精品免费 | 九九热这里有精品 | 又大又硬又爽免费视频 | 亚洲乱码国产一区三区 | 午夜精品久久久内射近拍高清 | 最近日本字幕免费高清 | 日本电影免费久久精品 | 99亚洲精品 | 国产高清美女一级毛片久久 | 2021久久99国产熟女人妻 | 午夜爽喷水无码成人18禁三级 | 天堂网久久 | 国产精品A8198V久久A片 | 99久久精品互换人妻AV | 欧美日韩精品一区二区三区高清视频 | 国产精品A久久久久久久久 国产精品A久久777777 | 日韩高清一区二区三区不卡 | 久久亚洲精品AV无码四区 | 小学生偷拍妈妈视频遭性教育 | 久久re6热在线视频精品66 | 男人J桶女人P视频无遮挡网站 | 蜜桃AV色欲A片精品一区 | 视频网站入口在线看 | 99久久国产露脸国语对白 | 我半夜摸妺妺的奶C了她 | 天海翼精品久久中文字幕 | 亚洲乱亚洲乱妇在线观看 | 久久青青无码AV亚洲黑人 | 久久本道久久综合伊人 | 欧美GAY猛男GAYA片18禁 | 欧美一区二区影院 | 国产九色在线 | 亚洲色婷婷久久精品AV蜜桃久久 | 九九在线中文字幕无码 | 日韩精品专区在线影院重磅 | 小莹的性荡生活45章 |