没有Rails Java程序员如何使用Ruby
http://tech.ddvip.com 2008年01月18日 社区交流
内容摘要:Ruby on Rails仅是使Ruby成为伟大的一个因素,这就象EJB仅是Java企业平台的一个组成部分一样。本文将带你一同讨论,作为一名Java开发者,仅利用Ruby自身所能够实现的功能。
◆一个Definition有一个到Word的聚合关联(aggregation association)。

图1:一本含有单词及其定义的简单字典的类图
三、在Java语言中的类定义
在列表1中,我用Java语言定义了Word类。请注意,我必须实现我的集合中Definition和同义词的关系确认。这是必要的,因为在这个示例中,Definition的创建不需要用一个Word关系来初始化,而Word也可以在不使用Definition初始化的情况下定义。
列表1.用Java语言实现的一个类Word
package com.vanward.dictionary;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Word {
private String spelling;
private String partOfSpeech;
private Collection definitions;
private Collection synonyms;
public Word(String spelling, String partOfSpeech) {
this.spelling = spelling;
this.partOfSpeech = partOfSpeech;
this.definitions = new ArrayList();
this.synonyms = new ArrayList();
}
public Word(String spelling, String partOfSpeech, Collection definitions) {
this(spelling, partOfSpeech);
if(definitions != null){
for(Iterator iter = definitions.iterator(); iter.hasNext();){
this.validateRelationship((Definition)iter.next());
}
this.definitions = definitions;
}
}
public Word(String spelling, String partOfSpeech, Collection definitions, Collection
synonyms) {
this(spelling, partOfSpeech, definitions);
if(synonyms != null){
this.synonyms = synonyms;
}
}
private void validateRelationship(Definition def){
if(def.getWord() == null || def.getWord() != this){
def.setWord(this);
}
}
public Collection getDefinitions() {
return definitions;
}
public void addDefinition(Definition definition) {
this.validateRelationship(definition);
this.definitions.add(definition);
}
public String getPartOfSpeech() {
return partOfSpeech;
}
public void setPartOfSpeech(String partOfSpeech) {
this.partOfSpeech = partOfSpeech;
}
public String getSpelling() {
return spelling;
}
public void setSpelling(String spelling) {
this.spelling = spelling;
}
public Collection getSynonyms() {
return synonyms;
}
public void addSynonym(Word synonym) {
this.synonyms.add(synonym);
}
}
列表1中的Word类相当简单-它是一个JavaBean,它有一个构造器链允许用户用各种属性集来创建Word。还要注意,它的synonyms和definitions属性都被设置为只读的(也就是说,它们没有相应的setter方法)。你只能为一个同义词添加一个Definition或另一个Word实例。
责编:豆豆技术应用