分享
 
 
 

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

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要 本文意在讨论,java开发人员如何在不借助于Rails的情况下,仅用Ruby实现特定的开发。

一、 引言

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

首先让我先澄清一些问题。第一,这不是一篇关于Ruby on Rails的文章。假如你想了解Rails,那么每周都出版新的文章和博客来颂扬这种令人激动的框架及其各种特征。第二,本文并非在预告,在目前出现一些更好的语言、工具和框架(如Ruby on Rails)时,Java平台即将崩溃。因此,本文与最近有关Ruby的主题并无多大关系。

别误会我-在我看来,Rails还是相当绝妙的!它是如此惊人地有力以致明显地影响了Web开发的许多方面。我的唯一看法是,有更多的关于Ruby而不是Rails的东西,非凡是当从一个Java开发者的角度来看问题时。

Rails的特长是网站开发;然而,我发现自己在构建网站时并没有经常使用这种技术。我所构建的大多数网站主要使用了Struts,Tapestry或其它一些技术。当我利用Ruby时,我仅把它作为开发实践的一部分来使用。因此,在本文中我将讨论,假如你主要是一位Java开发者,那么如何用Ruby来进行开发。

二、 初步感觉

Ruby的语法与Java语言存在明显区别。首先,Ruby没有括号或分号,并且它的类型完全是可选的。一些人可能说Ruby的语法相当精炼,并且它的目的之一就是用短命令编写简明的代码。

通过比较实现一个功能相对完善的类你就可以体会到这一点,在本文中我们先用Java语言定义它,然后再用Ruby来实现。本文中我先使用两个类:Word和Definition。在图1的简单类图中,你可以看到两个类共享一些关系:

·一个Word拥有一个同义词(也称作Word实例)集合。

·一个Word还可以拥有一个Definition集合。

·一个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实例。

在列表2中,你将看到相关的Definition类,它类似于Word类-它的exampleSentences属性也没有一个相应的set()方法:

列表2.用Java语言实现的一个Definition类

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有