【问题标题】:Coldfusion object inheritance sanity check needed需要 Coldfusion 对象继承完整性检查
【发布时间】:2010-09-30 19:18:19
【问题描述】:

我需要知道我是否以正确的方式做某事。

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

现在,我想为给定 div 处理的事情之一是该 div 的样式。所以通常我会认为我只是放入一些与样式相关的方法,例如 myDiv.getPadding() 或 myDiv.getBackgroundColor() 等。

但我突然想到,我最终可能还有其他对象,我可能还需要为这些对象做与样式相关的事情。

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

提前致谢!

【问题讨论】:

    标签: oop coldfusion components extends


    【解决方案1】:

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

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

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

    【讨论】:

    • 绝对是一个更好的方法。我完全赞成你的 CF 代码和 CSS 代码的完全分离。我会避免使用 CF 编写任何实际的样式,而是按照 Ben 的主张,动态更改链接到的样式表。
    • 我没有开发动态加载的样式表。我正在使用 CF 编写静态样式表,但我希望我的用户可以自定义这些样式表中的值。
    • 我会使用 cffile 编写每个用户的样式表,并动态加载它。这样,您只需在进行更改时编写它,而不是在每次加载页面时编写。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2012-06-14
      • 2020-07-22
      相关资源
      最近更新 更多