没有Rails Java程序员如何使用Ruby

http://tech.ddvip.com   2008年01月18日    社区交流

内容摘要:Ruby on Rails仅是使Ruby成为伟大的一个因素,这就象EJB仅是Java企业平台的一个组成部分一样。本文将带你一同讨论,作为一名Java开发者,仅利用Ruby自身所能够实现的功能。

  ◆一个Definition有一个到Word的聚合关联(aggregation association)。

没有Rails Java程序员如何使用Ruby

  图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实例。

责编:豆豆技术应用

正在加载评论...