<?php
abstract class ParamHandler{
	protected $source;
	protected $param = array();

	function __construct($source) {
		$this->source = $source;
	}

	function addParam($key,$val) {
		$this->params['$key'] = $val;
	}

	function getAllParams() {
		return $this->params;
	}

	static function getInstance($filename){     //用来获取子类实例,文件类型多时,只                                                    //需在这里加上if语句,然后对应写上子类
        if (preg_match("/\.xml$/i", $filename)) {
        	return new XmlParamHandle($filename);
        }
        return new TextParamHandler($filename);
	}

	abstract function write();  //保证子类实现这两个方法
	abstract function read();
}


?>

然后下面是子类

class XmlParamHandle extends ParamHdndle{
	function write(){}

	function read(){}
}


class TextParamHandle extends ParamHdndle{
	function write(){}

	function read(){}
}

这样实例化的时候可以这样子

$test = ParamHandler::getInstance("./params.xml");

这样根据传入的params.xml文件会找到对应的类实例化。