我试图决定设计一个旨在允许大量极端化的系统。 从我能够知道的情况来看,像抽象工厂这样的模式,除了重复法典之外,还不允许凌驾于基本方法之上(如下文所示)。
我对面向方面的方案规划做了一些初步研究,似乎与我所期望的思路一致,但我花了很困难的时间把我的头部总结在细节上。
abstract class Object {
protected $object_id;
protected $name;
function LoadObjectData()
{
$file_contents = readfile( object .$object_id. .data );
$data = array();
// parse file contents into $data array...
return $data;
}
function Create()
{
$data = $this->LoadObjectData();
$name = $data[ name ];
return $data;
}
}
class User extends Object {
protected $email_address;
function Create()
{
$data = parent::Create();
$this->email_address = $data[ email_address ];
return $data;
}
}
//----------Module 1-MySQL Lookup-------------
/*
* Redefine Object::LoadObjectData() as follows:
*/
function LoadObjectData()
{
$data = array();
$result = mysql_query("SELECT...");
// construct array from result set
return $data;
}
//----------Module 2-Cache Machine-------------
/*
* Redefine Object::LoadObjectData() as follows:
*/
function LoadObjectData()
{
if (exists_in_cache($object_id)) {
return get_cached_object($object_id);
}
$data = parent::LoadObjectData();
cache_object($object_id, $data);
return $data;
}
(这是一个不好的事例,但希望它有助于使我的观点贯穿整个过程)
打算采用的系统将有很大比例的方法可以推广,我希望尽量减少开发商所需的额外努力和学习。
《禁止杀伤人员地雷公约》是我所期待的,还是有更好的办法处理这一问题?
Thanks!