【问题标题】:"invokeImplicitAccessor" with cfc is good to use? [closed]带有cfc的“invokeImplicitAccessor”好用吗? [关闭]
【发布时间】:2014-01-03 13:07:22
【问题描述】:

在 ColdFusion 10 中,通过在 application.cfc 中设置 <cfset THIS.invokeImplicitAccessor = "true"> 我们现在可以直接访问属于 cfc 的任何属性。

我不确定开发人员为什么会使用这种功能。

我的问题,这不违反面向对象编程的数据隐藏原则吗?

【问题讨论】:

  • 这主要是基于意见,所以如果关闭,我不会感到惊讶,但亚当卡梅隆的博客上有一篇很好的文章可以帮助你得出结论cfmlblog.adamcameron.me/2013/09/…
  • 再次——暗指你上周提出的一个类似问题——你需要在论坛上问这种事情,而不是在 S/O 上。 S/O 适用于诸如“我有这个特定问题,我已经研究过,这里有证据,我的测试到目前为止,但我无法解决它。你能引导我找到答案”之类的问题。并且这些问题需要明确地回答,而不是主观的。这是一个很好的问题,但不适合这里。投票结束。

标签: coldfusion coldfusion-10 application.cfc data-hiding


【解决方案1】:

隐式访问器是一种既定的面向对象(它们本身实际上不是面向对象的概念;它只是语法糖)概念(参见C#'s docs for accessors)。这只是用于打开它们的 CFML 机制(默认情况下它们不打开)。我看不出这与“数据隐藏原则”有什么关系。

它所做的只是意味着而不是这样做:

myObj.getProperty();

可以这样做:

myObj.property;

使用后一种语法,getProperty() 仍然被调用,它只是被隐式调用。

【讨论】:

  • 我的意思是说它不违反封装,因为用户不应该直接访问一个类的任何数据成员
  • @DeepakKumarPadhy - 查看 Adam 发布的链接,您会发现它没有真正直接访问。这与您所描述的创建变量publicprotected 不同。访问器的概念最终只是写get/setProperty() 的一种更短的方式。
  • 当然,我会检查的。
  • 是的,如果你要问一个问题,你实际上需要阅读提供的答案/其他信息。否则我们只是在浪费时间。
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 2014-07-09
  • 2011-07-05
  • 2023-01-18
  • 2023-03-14
  • 1970-01-01
  • 2016-02-15
  • 2010-09-11
相关资源
最近更新 更多