所以,我正在尝试学习和利用组件来使我的代码更好......
我理解getter和setter是什么......但是,我不知道在我的组件如何工作方面把它们放在哪里。我的组成部分是一个拥有独特身份和部门的教师。我想以结构形式提供所有信息,因为每个教师都有很多信息。我的init方法将初始化特定实例的id和部门,然后继续调用将其余信息填充到结构中的查询。我只是不确定如何为id和部门做getter和setter ...我只是初始化一个“空白”实例,然后使用getter / setter来实际输入?
关于组件的另一个想法/问题: 我的组件应该只有处理单个实体(个体)的方法,还是我的组件中还有处理整体的方法(如所有个体的搜索功能)。 ......或者我应该将两者分开?
谢谢!
答案 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
个对象。