如何在结构视图中应用装饰器,知道只有一个视图负责执行代码块来呈现模板?为:
<?php
class View {
public function render ( $template ) {
printf ( 'Rendering template %s' , $template ) ;
}
}
class MemberView { }
class AdministratorView { }
$Admin = new MemberView ( new AdministratorView ( ) ) ;
$Admin->render ( ) ;
在这种情况下,我正在渲染管理员,但是在浏览驱动程序时,将获取每个成员已到达视图并执行以显示面板的基本功能,或仅管理员可以看到的内容,但在逻辑中,管理员也是会员..因此必须制作结构,适用于主持人,全球版主......
我的问题是在这种情况下如何应用装饰器..
答案 0 :(得分:0)
好吧,我们设法解决了问题..解决方案:
<?php
class View {
public function render ( $template ) {
printf ( 'Rendering template %s' , $template ) ;
}
}
abstract class ViewDecorator extends View {
protected $view ;
public function __construct ( View $view ) {
$this->view = $view ;
}
}
class MemberView extends ViewDecorator {
public function render ( ) {
$this->view->render ( 'Member' ) ;
}
}
class AdministratorView extends ViewDecorator {
public function render ( ) {
$this->view->render ( 'Administrator' ) ;
}
}
$ADM = new MemberView ( new AdministratorView ( new View ( ) ) ) ;
$ADM->render ( ) ;
输出:渲染模板管理员
如果我删除了管理员的渲染。
<?php
$Member = new MemberView ( new View ( ) ) ;
$Member->render ( ) ;
输出:渲染模板会员