php代码
<?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(){ } 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{ } } } $image=ImageFactory::factory('/path/to/b/bei.jpg'); echo $image->getWidth(); ?>