需要Coldfusion对象继承健全性检查

时间:2010-09-30 19:18:20

标签: oop coldfusion components extends

我需要知道我是否正确地采取行动。

对于给定的页面,我正在为页面本身实例化一个对象。我们将该对象称为myPage。在页面中我有容器(通常是div标签)。当我转到一个管理组件来处理特定的div时,我也为它实例化了一个对象。我们称之为myDiv。

现在,我想要为给定div工作的一件事是该div的样式。所以通常我会认为我只是放入了一些与风格相关的方法,比如myDiv.getPadding()或myDiv.getBackgroundColor()等。

但是我发现我最终可能还有其他对象,我可能还需要做与风格相关的事情。

鉴于此,我是否应该创建一个单独的style.cfc?然后由div对象扩展吗?或者样式对象是否会扩展div对象?我的理解是更具体的对象扩展了不太具体的对象,但我不确定在这种情况下哪个更具体:是div对象,它引用特定的div,还是样式对象,它提供了一组特定的数据?

提前致谢!

2 个答案:

答案 0 :(得分:3)

首先,除非您需要动态编写样式,否则我会创建一个或多个样式表并动态链接它们,而不是动态创建它们。

但是,假设您确实需要即时创建它们......

我不会让控件(div)扩展样式,反之亦然。样式不是div的更具体的定义,反之亦然。我要做的是创建一个样式对象,它只包含给定元素或元素集的显示元数据。这可以包含在您的control / div对象(不是扩展名)中,也可以是页面对象的一部分。风格肯定与控件有关,但我不会将它们组合在一起,因为这会使内容和表示分离变得更加困难。

答案 1 :(得分:0)

我不是说这是最好的方法,但是如果你真的想用CFC来设置你的页面样式,你可以让DivTag.cfc扩展一个HtmlTag.cfc,它将作为你所有人的基类。 HTML标签。然后,您可以将StyleAttribute.cfc组合到HtmlTag.cfc中,以处理任何样式属性,例如背景颜色和填充。那么你最终会调用像myDiv.getStyle()。getPadding()。

这样的函数

一般情况下,您应该尝试使用组合(“has a”)而不是继承(“is a”),而不要对组件层次结构过于疯狂。在这种情况下,我建议使用CSS文件来设置页面样式。