当涉及面向对象的编程时,通常一个类执行特定的任务,例如保持用户信息或输入/输出控制.
当你说一个用于控制输出的对象时,可以在该对象中设置一个方法来控制输出类型,或者如何处理每个特定内容,但这意味着对象的唯一目的就是因为它现在不只是发送内容,而且它还根据它的类型操纵内容.
我们用来解决这个问题的一种方法是将一组任务分组到一组类/对象中,例如:
abstract class Output
{
public $content_type = 'text/plain';
public function _send(){}
}
Run Code Online (Sandbox Code Playgroud)
输出类显然会有更多的方法,但只有与输出内容相关的方法,如标题等,而不是内容的操作,那么你会有类似的东西:
class HTMLOutput extends Output
{
public $content_type = 'text/html';
}
Run Code Online (Sandbox Code Playgroud)
以及对内容的操纵:
class CSSOutput extends Output
{
public $content_type = 'text/css';
public _send()
{
if($_SERVER['APP']['Settings']['CSSCompress'] == '1')
{
$this->_compress_css();
}
parent::_send();
}
private function _compress_css()
{
$this->content = ; //Some compression lib
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在创建和组织许多分组的类/对象时遵循的主要架构点.