关于Coldfusion 8中的getter,setter和components的问题

时间:2011-06-03 14:54:05

标签: coldfusion components getter-setter

所以,我正在尝试学习和利用组件来使我的代码更好......

我理解getter和setter是什么......但是,我不知道在我的组件如何工作方面把它们放在哪里。我的组成部分是一个拥有独特身份和部门的教师。我想以结构形式提供所有信息,因为每个教师都有很多信息。我的init方法将初始化特定实例的id和部门,然后继续调用将其余信息填充到结构中的查询。我只是不确定如何为id和部门做getter和setter ...我只是初始化一个“空白”实例,然后使用getter / setter来实际输入?

关于组件的另一个想法/问题: 我的组件应该只有处理单个实体(个体)的方法,还是我的组件中还有处理整体的方法(如所有个体的搜索功能)。 ......或者我应该将两者分开?

谢谢!

1 个答案:

答案 0 :(得分:3)

这是建立教师CFC的CF8方式。请注意,我没有使用'实例'范围'因为当它升级到CF9时,你可以删除getter / setter并将accessor=true添加到cfcomponent并且你已经完成了。但是,当您需要从CFC中获取数据作为DAO的结构来保留对象时,您可能会发现添加一个有用的“实例”范围非常有用。

<cfcomponent>
  <!--- does nothing in CF8 other then for documentation purposes --->
  <cfproperty name="id">
  <cfproperty name="department">

  <!--- if you want to type your param and return type for functions in CF8, use CFML --->
  <cfscript>
    function init (id, department)
    {
      setId(id);
      setDepartment(department);

      return this;
    }

    function getId() {
        return variables.id;
    }

    function setId(id) {
         variables.id = arguments.id;
    }

    // do the same for dept
    // make use of Snippet in CFEclipse / CF Builder to gen for you

  </cfscript>

</cfcomponent>
  我可以在我的方法中使用方法吗?   处理整体的组件   (就像所有人的搜索功能一样   个人)。 ......或者我应该分开   两个?

通常在CF世界中(受Java世界启发),我们将它们分成FooService而没有状态,并将FooService缓存为Application范围内的单身。然后实现与FooDAO(数据访问对象)层中的数据库通信的创建读取更新删除(CRUD)方法。然后,您的FooService会调用FooDAO中的CRUD方法为您读取(并填充)Foo个对象。