gusucode.com > 同城苏州黄页系统php源码程序 > lib/lastAbstract.class.php

    <?
if( !class_exists('runtime') )
	include_once($root_path."lib/runtime.class.php");


/**
 * 最后的抽象类
 *
 * 他被设计为是 在继承树中 离现实类最近的 一个抽象类,这样,我们想将某个功能 以抽象类的方式 添加到继承树种的时候,只要添加到 这个类以前,那么这个类以后的所有 实现类 都回继承这一功能,并且不必 为众多的直接实现类 一一修改继承关系。
 * 例如 抽象类 A 派生了三个 实现类 a,b,c   如图:
 *   / a
 * A - b
 *   \ c
 * 后来我们又希望 将 某些功能 左为抽象类抽象类 B 加入到继承树种 A 之后,即 A 不直接具有 B 的功能,但 a,b,c 做为实现类 应该具有, 那么就是:
 *       / a
 * A - B - b
 *       \ c
 * 但是这样做的话,a,b,c 的承属关系 就要被一一修改,才能保证 继承树的正确, 但如果我们 忽略了 还有一个 实现类d 也是从 A 派生,而也同样需要 B 的功能的话,情况就变的大乱了。
 *
 * 所以,我们再使用一个抽象类 C,他很可能是一个空的类(就是什么也没有,没有属性,没有方法),但是所有的 实现类 都从他那里派生,而增加 所有实现类都希望 继承的功能时,为此功能编写一个抽象类,在继承树中 插入到 C 的前面:
 * 增加功能之前:
 *                   / a
 * A - C (空的抽象类) -  b
 *                   \ c
 * 增加功能以后:
 *                       /  a
 * A - B - C (空的抽象类) -   b
 *                       \  c
 *                       \  d (也许我们忽略了 还有一个 d 的存在, 但那也没有关系,这个疏忽 不会造成糟糕的结果了:)
 *
 * 上图的 C 就是 “最后的抽象类”,他存在的意义,是为了维护继承树中 多分枝节点 的安全。
 *
 */
class lastAbstract extends runtime
{
	function lastAbstract()
	{
		# 直接调用基类 的 构造函数
		$this->base();
		
		# 初始化 运行测试函数
		if( $this->debug >= __DEBUG_RUNTIME )
			$this->init_runtime();
	}
}
?>