我有一个Display处理脚本的 HTML 输出的对象。它有一个mode属性,它定义了如何生成输出的许多方面。有几种模式,我以后可能会添加更多。每种模式都暗示着它自己的参数。例如,一个author模式意味着一个authorID. search模式意味着将对象Search作为参数,其中将包含查询信息。一个comment模式意味着一个postID和commentID参数。
因此, amode有 aname和一定数量的parameters,具体取决于name。
我决定创建一个Display_Mode对象,它有两个属性:name和parameters. 但是我该如何parameters分配names?所以,如果我有一个comment模式,它必然意味着有postID和commentID参数?
我目前的解决方案是这样的:
class display_mode{
public $name;
public $params;
public function __construct($name)
{
$this->name = $name;
switch ($this->name){
case 'comment':
$this->params = array('postID', `commentID`);
break;
case 'author':
$this->params = array('authorID');
}
//etc..
}
}
这似乎有点乱。有没有更好的办法?
UPD:给定的答案让我问了另一个关于整个设计的问题,这也为这个设计提供了背景。