国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

沒有Rails Java程序員如何使用Ruby

2019-11-18 11:17:48
字體:
來源:轉載
供稿:網友
摘要 本文意在討論,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)。

沒有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實例。
在列表2中,你將看到相關的Definition類,它類似于Word類-它的exampleSentences屬性也沒有一個相應的set()方法:

  列表2.用Java語言實現的一個Definition類



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扬州市| 泉州市| 个旧市| 牡丹江市| 梁山县| 汉川市| 石门县| 赫章县| 营山县| 山阳县| 开原市| 万山特区| 绥芬河市| 库尔勒市| 双城市| 延吉市| 舟曲县| 诸暨市| 达拉特旗| 郧西县| 云阳县| 宝丰县| 铜山县| 武山县| 望城县| 子长县| 黄浦区| 鹤山市| 嘉定区| 获嘉县| 镇原县| 宝清县| 石狮市| 绩溪县| 南木林县| 惠安县| 拉萨市| 绵阳市| 宁蒗| 佛山市| 门头沟区|