时间:2021-05-02
对于包含多Item的用户界面组件(UI Component)(如Tree, Table, DataGrid等) Item 容器来说,其行为大多固定,需要时常改变的是Item的显示。如果将显示实现放在这些item containers的class内,那么不仅这些classes的可重复利用性受到破坏,代码也难以管理。这时应该考虑将item的显示逻辑分离出来。
具体实现方法:将item显示逻辑独立出来放到item render class/function中。
这种模式在Java Swing及Flex的API中有大量的使用。在这里举一个PHP的例子。在网站制作时,我们使用如下的HTML代码搭配CSS来显示导航:
在PHP中,我们使用Node来为如上的tree建模 - 有一个顶级的虚拟Node, 然后回溯打印即可。为了美化页面,这时我们想让第一级的Node显示图片,让其他级的保留使用文字。这时我们使用如下的render function:
// node class中: public function toHtmlMenu($printThis = true, $printSubItemsLevel = 100, $renderFuncForListItemContent = NULL) { if($printThis) { $s = "<li>"; if($renderFuncForListItemContent == null) { $s .= "<a href=\"$this->path\">" . $this->getLabel(). "</a>"; }else{ $s .= call_user_func($renderFuncForListItemContent, $this, $selectIndex,$language, $country); } } // recursive print ... }
// in caller script: function menuItemRenderLevel1AsImage(MenuItem $menuItem) { if($menuItem->getLevel() == 1) { return "<a href=\"" . $menuItem->getPath() . "\">" . "<img src=\"$menuItem->id.png\">" . "</a>"; }else{ return "<a href=\"$this->path\">" . $this->getLabel(). "</a>"; } }$menuCode = $MENU_ROOT->toHtmlMenu(false, 2, "menuItemRenderLevel1AsImage");
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java单例模式单例模式是一种常用的软件设计模式。在它的可信结构中只包含一个被实例化单例的特殊类。通过单例设计模式可以把整系统中的一个类只有一个实例。单例设计模
单例模式动机有时候只有一个类的实例是很重要的。比如,一个系统应该只有一个窗口管理实例。单例模式是最简单设计模式:类负责实例化自己,确保只有一个实例,并且提供一个
单例模式概念单例模式是指整个应用中类只有一个对象实例的设计模式。单例模式的特点一个类在整个应用中只有一个实例类必须自行创建这个实例必须自行向整个系统提供这个实例
本文实例为大家分享了Java设计模式之单例模式的具体代码,供大家参考,具体内容如下概念:单例模式:一个类中只有一个实例。一个类有且仅有一个实例,并且提供了一个全
ref是React中的一种属性,当render函数返回某个组件的实例时,可以给render中的某个虚拟DOM节点添加一个ref属性,如下面的代码所示:varAp